js中call()方法的使用以及說明

代碼實(shí)力1

window.color = 'red';

document.color = 'blue',

let obj = {
  color : 'pink'
}

function createColor (color){
  this.color = color;
}
let c = new createColor('white');

function showColor(){
  console.log(this.color)
}
showColor() //默認(rèn)this就是window  red
showColor.call(window) //  red
showColor.call(cocument) //  blue
showColor.call(obj) //  pink
showColor.call(c) //  white

代碼實(shí)例2:

var elJson = {
  name:'Web前端',
  callBack:function(){
    console.log(this.name)  
  }
};
var newJson = {
  name:'javaScript is cool'
};

//直接調(diào)用
elJson.callBack() //結(jié)果是Web前端

//而使用call()方法調(diào)用
elJson.callBack.call(newJson ) //結(jié)果是javaScript is cool;
解釋

call()改變了this的指向,剛開始this的指向是elJson這個(gè)對象,而當(dāng)使用call()this就不在指向這個(gè)對象了,而是新的newJson這個(gè)對象

代碼實(shí)例3

利用構(gòu)造對象方式

  var newJson = {
      name:'javaScript is cool'
    };
    function createJs(name){
        this.name = name;
        this.callBack = function(){
            console.log(this.name);
        }
    }
    var cat = new createJs('Web前端');
    cat.callBack(); //結(jié)果是Web前端
    cat.callBack.call(newJson) //結(jié)果是javaScript is cool;

兩種方法的原理是一樣的,只是這一種利用構(gòu)造對象;
其實(shí)在js中var 一個(gè)變量都是在頂層對象window中添加了一個(gè)屬性而已

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容