var name = "Window Object";
var a = {
name: 'manish',
getName: function() {
return this.name;
}
}
b = (a.getName = a.getName)();
console.log(b, window);
上面是我寫在JSFiddle上的代碼。爲什麼我的全局變量在JSFiddle上被覆蓋?
這裏是鏈接:https://jsfiddle.net/shettyrahul8june/o49jn5fm/
變量b返回結果,而不是窗口對象。我看到在Window對象中有一個名爲的名稱爲的屬性,其結果存儲爲字符串。但我不知道爲什麼我的全局變量a沒有覆蓋該變量。感謝預期。
編輯:夥計們,我想我不清楚我的問題。我知道它是從JSFiddle引用窗口對象的名字。但我也寫了var name =「窗口對象」。
爲什麼我的變量名稱沒有超過窗口對象名稱,因爲我認爲即使已聲明的var名稱也應該附加到窗口對象。是不是因爲,小提琴具有這樣的名字被分配了類似的
JSFiddleWrapper =一個包裝對象{ 名稱:「窗口對象」 }
,因此它引用window.name?
要調用沒有它的背景下'a.getName',所以它默認爲'window',一個在的jsfiddle'窗口.name'是'result'。你的代碼是多餘的,只要'b = a.getName()',當然? –
比較[在嚴格模式下的相同代碼](https://jsfiddle.net/o49jn5fm/1/) –
@NiettheDarkAbsol我知道這是多餘的。我正在測試「this」在寫入時的行爲(a.getName = a.getName)(); ;) –