JS中的this是如何工作的

代碼示例:

 var fullname="A"
    var obj= {
        fullname:'B',
        prop:{
            fullname:'C',
            getFullName:function () {
                return this.fullname
            }
        }
    };
    console.log(obj.prop.getFullName());// C
    var test=obj.prop.getFullName;
    console.log(test());//A

解析:

this所引用的是函數上下文,取決於函數是如何調用的,而不是怎麼被定義的;

第一個console.log()getFullname()是作爲obj.prop對象的函數被調用;

getFullname()被賦值給test變量時,當前的上下文是全局對象window,這是因爲test被隱式地作爲全局對象的屬性;

call() 和 apply():

讓最後一個console.log() 打印輸出 C

console.log(test.call(obj.prop));
這就改變了this的指向!!!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章