2017-09-02 64 views
-1

我知道這個問題是相當愚蠢的。爲什麼在一個方法中的關鍵字

相關的代碼:

var myObj = { 
    name: 'Popo', 
    lastName: 'Shomo', 
    fullName: function(){ 
     return name + " " + lastName; 
    } 
}; 

我知道加入this.namethis.lastName它會工作,但我的問題是:爲什麼不能去其詞法範圍,並從那裏搶屬性?我知道它完全是D-U-M-B,但我想知道背後的正確原因。

+1

如果你之前沒有包含'name'屬性並將其中一個設置爲'myObj.name ='Popo',那麼'name'是否仍然會引用該函數中的'this.name'?這是一個潛在的令人困惑的範圍問題,它使得這個簡單得多的解決方案(以及爲什麼[with'語句](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/with )已棄用)。 – Ryan

回答

0

這是因爲你理論上可以在你的文件和對象屬性中具有相同名稱的變量。對象屬性總是必須來自一個集合對象,否則每個面向對象的語言都會查找以前設置的變量。

相關問題