含义:
call:调用一个对象的一个方法,用另一个对象替换当前对象。
举例:A.call(this,arguments);
apply:调用一个对象的一个方法,用另一个对象替换当前对象。
举例:A.apply(this,agr1,agr2)
相同点:方法的含义一样,功能一样,第一个参数的作用也一样
不同点:call传入的参数必须单个;apply只能传两个参数,第二个参数以数组的形式传入
如何选择?
call适合传入的参数较少的
apply适合传入的参数较多的
//-----------------------------------apply--------------------------------------------
// 创建一个人
function Person(name,age){
this.name=name;
this.age=age;
console.log(this);
}
// 创建一个学生
function Studert(name,age,grade){
// apply就是继承父元素的属性
Person.apply(this,arguments);this.grade=grade;
}
// 创建一个学生类
let student=new Studert("玛丽","2", "一年级");
alert("name:"+student.name+"\n"+"age:"+student.age+"\n"+"grade"+student.grade);
//-----------------------------------call--------------------------------------------
// 创建一个人
function Person1(name, age) {
this.name = name;
this.age = age;
console.log(this);//
}
// 创建一个老师
function Teacher(name, age, job) {
Person1.call(this,name,age);
this.job = job;
}
//创建一个具体的老师
let teacher = new Teacher("玛丽", "25", "老师");
alert("name:" + teacher.name +"\n"+ "age:" + teacher.age +"\n"+ "job:" + teacher.job);
网友评论