javaScript中call和apply

作者: 天上月丶 | 来源:发表于2017-12-18 19:21 被阅读49次

call方法:

语法:call(thisObj,Object)

定义:调用一个对象的一个方法,以另一个对象替换当前对象。

说明:

call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。

apply方法:

语法:apply(thisObj,[argArray])

定义:应用某一对象的一个方法,用另一个对象替换当前对象。

说明:

如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。

如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。

eg1:

var pet={
    words:'...',
    speak:function(say){
        console.log(say+' '+this.words)
    }
}


var dog={
    words:'Wang'
}

pet.speak.call(dog,'speak')  //speak Wang

eg2

function Pet(word){
    this.word=word;
    this.speak=function(){
        console.log(this.word)
    }
}


function Dog(word){
    Pet.call(this,word)
    //Pet.apply(this,arguments);  二者选其一即可
}

var dog=new Dog('Wang');
dog.speak();  //Wang

相关文章

网友评论

    本文标题:javaScript中call和apply

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