如何理解和熟练运用js中的call及apply
展开全部
js中的call和apply的确有一点复杂,下面请听我慢慢道来
先说apply用法,
obj.apply(obj,args):传递两个参数,obj代替传入类中的this对象,args代替传入类中的参数(数组形式)
obj.call(obj,arg1,arg2):和apply用法类似,只是后面的传值不同,可以直接写arguments,或者直接把类的所有参数写进去
看下面这个例子
1.先声明一个Person类,赋予初始值name,age
function Person(name,age) {
this.name=name;
this.age=age;
}
2.声明一个Student类,Student类中传递了name和age的参数,并没有初始化赋值。
function Student(name,age,sex,height){
Person.apply(this,arguments);//Person.apply(this,[name,age]);
//也可以这样写Person.call(this,arguments);//Person.call(this,name,age);
this.sex=sex;
this.height=height;
}
3.实例化一个Student类为p1的对象
var p1 = new Student("xiaoming",22,"boy","180");
console.log(p1);//Student {name: "xiaoming", age: 22, sex: "boy", height: "180"}
看到结果p1对象也有有name,age的初始值。
所有apply将Person类中的初始化复制传递到了Student里面。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询