@hotlp
2017-11-09T10:23:57.000000Z
字数 762
阅读 906
未分类
用的不多,但总得知道这么个东西,偶尔会发现还是很有用。
1.call和apply本质没有区别,只是传参不同,第二个参数
obj.call(thisObj, arg1, arg2, ...);
obj.apply(thisObj, [arg1, arg2, ...]);
2.作用 call和apply可以动态改变this,当一个obj1没有某个方法,而obj2有,又不想重新给obj1写,那我们可以借助call或apply用obj2的方法来操作,如:
function Ninjia(name, size, weapon) {
this.name = name;
this.weapon = weapon;
this.size = size;
}
Ninjia.prototype.sayHello = function() {
console.log(this.name + '拿起了他' + this.size + '厘米的' + this.weapon + '冲你来了一发');
}
var ninjia = new Ninjia('Mike', '18','烧火棍');
function Boxer(name, size, weapon) {
this.name = name;
this.weapon = weapon;
this.size = size;
}
var boxer = new Boxer('Bob','20', 'boxing glove');
// ninjia.sayHello.call(boxer);
function SwordMan(name, size, weapon) {
Ninjia.call(this, name, size, weapon);
Ninjia.prototype.sayHello.call(this);
}
var swordman = new SwordMan('sam','50','sword');