js中call和apply的用法和区别
分享知识http://www.fedrobots.com/?search=291848我来纠错call 和 apply 都是为了改变某个函数运行时,函数体内部 this 的指向。
call 和 apply二者的作用完全一样,只是接受参数的方式不太一样。
function aaa(name){
this.name = name;
this.age = 16;
};
function bbb(name){
aaa.call(this,name); //call的参数,通过第1个之后的参数用逗号分隔传入。
//aaa.apply(this,arguments); //和call的作用一样,只不过apply第二个参数是传得数组。
this.work = '开发';
}
var newb = new bbb('安云');
var newa = new aaa('安云');
console.log(newb); //输出:bbb {name: "安云", age: 16, work: "开发"},说明bbb继承了aaa的所有属性。
console.log(newa); //输出:bbb {name: "安云", age: 16},aaa没有继承任何bbb的属性。