在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 函數(shù)調(diào)用this指向的問題

函數(shù)調(diào)用this指向的問題

   var getName;
    function getName(){
        console.log(5)
    }

    function Foo() {
        getName=function () {
            console.log(1)
        }
        return this
    }

    Foo.getName=function(){
        console.log(2)
    }

    Foo.prototype.getName=function(){
        console.log(3)
    }

    getName=function(){
        console.log(4)
    }

    Foo().getName(); // 結果為什么是1?  this指向的不是window嗎
    getName()  //  這個為什么也為1 ?  不是直接調(diào)用嗎?
回答
編輯回答
壞脾滊

Foo() 中
window.getName 被重新賦值

2017年6月25日 22:35
編輯回答
清夢

getName為全局變量,即window.getName

Foo()因為沒有指定this,所以返回window(非嚴格模式下)沒有問題。

Foo().getName即window.getName,此前在foo中已經(jīng)被改為 console.log(1),所以輸出1

getName()同理也輸出1

2017年3月7日 04:59
編輯回答
毀了心

主要是Foo說一下Foo
Foo里面有個getName = function(){}對全局也就是window.getName的賦值操作導致覆蓋之前的值
所以調(diào)用Foo之后window.getName就被覆蓋輸出1的函數(shù)了

function Foo() {
    getName=function () {//全局變量覆蓋
        console.log(1)
    }
    return this//返回window
}
Foo().getName(); // Foo返回的是window,因為Foo里面做了全局變量的getName賦值操作所以是輸出1
getName()  // 全局變量
2018年6月10日 01:17