2015-09-25 123 views
-1

我是JavaScript新手,非常抱歉,如果它太愚蠢問題。我不明白this關鍵字在下面的示例中的行爲。JavaScript原型範圍問題

在第一種情況下,thiswindow對象:

Element.prototype.x = this; 
some_element.x; // Returns window object. 

而在第二,它指的是DOM元素:

Element.prototype.x = function(){return this;}; 
some_element.x(); // Returns element itself. 

爲什麼?這些例子有什麼不同?

+1

這應該有助於https://developer.mozilla.org/en -US /文檔/網絡/的JavaScript /參考/運營商/這 – BenG

+1

或此:http://stackoverflow.com/questions/3127429/how-does-the-this-keyword-work/3127440#3127440 –

+1

下次發佈完整的源代碼。 –

回答

0

在第一種情況下,這是指窗口對象:

Element.prototype.x = this;(此處的範圍點「在JS全球範圍」窗口)

而在第二,它指的DOM元素:

Element.prototype.x = function(){return this;};(但是在這裏,因爲你正在定義一個函數到對象「元素」,所以這個關鍵字的範圍指向「元素」對象)。