美文网首页
【Javascript】call/apply

【Javascript】call/apply

作者: 嘻洋洋 | 来源:发表于2018-09-21 17:18 被阅读0次

为什么要用call/apply

把一些通用函数写好,可以任意绑定在多个类的原型上,这样动态的给类添加了一些方法,还节省了代码。这是一种强大的功能,也是动态语言的强表现力的体现。JS 里的 call/apply 在任何一个流行的 lib 里都会用到,但几乎就是两个作用:

两个方法的用法说明

这两个方法从哪来的:

  • 每个函数都包含两个非继承而来的方法:call()方法和apply()方法。
  • 相同点:这两个方法的**作用是一样的。

两个方法的区别,接收参数的方式不同:

  • apply()方法 接收两个参数,一个是函数运行的作用域(this),另一个是参数数组(argArray)。如果argArray不是一个有效数组或不是arguments对象,那么将导致一个 TypeError,如果没有提供argArray和thisObj任何一个参数,那么Global对象将用作thisObj
  • call()方法 第一个参数和apply()方法的一样,但是传递给函数的参数必须列举出来。
    var Pet = {
        words : '...',
        speak : function (say) {
            console.log(say + ''+ this.words)
        }
    }

    Pet.speak('Speak'); // 结果:Speak...
    var Dog = {
        words:'Wang'
    }
    //将this的指向改变成了Dog
    Pet.speak.call(Dog, 'Speak'); //结果: SpeakWang

相关文章

网友评论

      本文标题:【Javascript】call/apply

      本文链接:https://www.haomeiwen.com/subject/fqlznftx.html