[关闭]
@hotlp 2017-11-09T18:23:57.000000Z 字数 762 阅读 842

call和apply

未分类


用的不多,但总得知道这么个东西,偶尔会发现还是很有用。
1.call和apply本质没有区别,只是传参不同,第二个参数

  1. obj.call(thisObj, arg1, arg2, ...);
  2. obj.apply(thisObj, [arg1, arg2, ...]);

2.作用 call和apply可以动态改变this,当一个obj1没有某个方法,而obj2有,又不想重新给obj1写,那我们可以借助call或apply用obj2的方法来操作,如:

  1. function Ninjia(name, size, weapon) {
  2. this.name = name;
  3. this.weapon = weapon;
  4. this.size = size;
  5. }
  6. Ninjia.prototype.sayHello = function() {
  7. console.log(this.name + '拿起了他' + this.size + '厘米的' + this.weapon + '冲你来了一发');
  8. }
  9. var ninjia = new Ninjia('Mike', '18','烧火棍');
  10. function Boxer(name, size, weapon) {
  11. this.name = name;
  12. this.weapon = weapon;
  13. this.size = size;
  14. }
  15. var boxer = new Boxer('Bob','20', 'boxing glove');
  16. // ninjia.sayHello.call(boxer);
  17. function SwordMan(name, size, weapon) {
  18. Ninjia.call(this, name, size, weapon);
  19. Ninjia.prototype.sayHello.call(this);
  20. }
  21. var swordman = new SwordMan('sam','50','sword');
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注