call和apply用法

call和apply用法一直都知道call和apply,用的真的很少,今天想起来了,就随便说说吧1:基本用法看到call和apply,大家想到的应该都是一句话改变对象执行的上下文2:apply和call的用法其实call和apply的用意简单来说都一样,就是改变this的指向这也是他们的相同点下面看一个具体的demovarperson={  name:’xiaom

大家好,欢迎来到IT知识分享网。

一直都知道call和apply,用的真的很少,今天想起来了,就随便说说吧

1:基本用法

看到call和apply,大家想到的应该都是一句话 改变对象执行的上下文

2:apply和call的用法

其实call和apply的用意简单来说都一样,就是改变this 的指向
这也是他们的相同点
下面看一个具体的demo
var person = {

    name: ‘xiao ming’,
    age: 18,
    who: function () {

        console.log( ‘my name is ‘ + this.name + ‘ , ‘ + this.age + ‘ years old’ );
        console.log( person === this);
    }
}
person.who();
person.who.apply({name:’123′,age:15});
person.who.call({name:’123′,age:15});
person.who.call({name:’123′})

这样person的指向就改变了


3:apply和call的不同

先看下apply和call 的用法

call 

function.call(obj[,arg1[, arg2[, [,.argN]]]]])

apply

function.apply(obj[,argArray])

可以看出,它们里面传入的参数不同。

那到底什么时候该用apply,什么时候用call呢

根据你要传入的参数来做选择,不需要传参或者只有1个参数的时候,用call,当要传入多个对象时,用apply

4:apply和call其他用法

function superClass () {
    this.a = 1;
    this.print = function () {
        console.log(this.a);
    }
}

function subClass () {
    superClass.call(this);
    this.print();
}

用call实现继承,subClass通过call实现对superClass 的继承。

本文参考:https://www.jianshu.com/p/131ce0390cf8



免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/11157.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信