call方法:
語法:call(thisObj,Object)
定義:調(diào)用一個(gè)對(duì)象的一個(gè)方法,以另一個(gè)對(duì)象替換當(dāng)前對(duì)象。
說明:
call 方法可以用來代替另一個(gè)對(duì)象調(diào)用一個(gè)方法。call 方法可將一個(gè)函數(shù)的對(duì)象上下文從初始的上下文改變?yōu)橛?thisObj 指定的新對(duì)象。
如果沒有提供 thisObj 參數(shù),那么 Global 對(duì)象被用作 thisObj。
apply方法:
語法:apply(thisObj,[argArray])
定義:應(yīng)用某一對(duì)象的一個(gè)方法,用另一個(gè)對(duì)象替換當(dāng)前對(duì)象。
說明:
如果 argArray 不是一個(gè)有效的數(shù)組或者不是 arguments 對(duì)象,那么將導(dǎo)致一個(gè) TypeError。
如果沒有提供 argArray 和 thisObj 任何一個(gè)參數(shù),那么 Global 對(duì)象將被用作 thisObj, 并且無法被傳遞任何參數(shù)。
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