2015-09-25 89 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;};(但是在这里,因为你正在定义一个函数到对象“元素”,所以这个关键字的范围指向“元素”对象)。