【发布时间】:2011-12-20 09:23:56
【问题描述】:
好的,所以我以为我明白这一点(不是双关语),但显然不是。
var Constructor = function () {
var internalFunction = function () {
return this === window;
};
this.myMethod = function () {
alert(internalFunction());
};
};
var myObj = new Constructor();
myObj.myMethod();
这会提醒true。为什么内部函数不能将this 视为对象?相反,我必须在myMethod 中使用alert(internalFunction.call(this));。
编辑:我正在寻找关于为什么以这种方式分配this 的解释,而不是var self = this; 等解决方法。抱歉,如果我没有说清楚。
【问题讨论】:
-
这个问题的答案都没有使用
that。我觉得被背叛了。 -
@missingno:我不喜欢
that。它是非描述性的。也就是说,我自己的回答并没有更好的选择:) -
+1 表示无意的双关语
-
几年后回来...我倾向于使用小写版本的构造函数。
function Note() { var note = this;我认为这是一个非常易于阅读的约定。
标签: javascript this