【发布时间】:2010-09-13 03:14:30
【问题描述】:
我刚刚在 JavaScript 中遇到了一个有趣的情况。我有一个类,其方法使用对象文字表示法定义多个对象。在这些对象中,使用了this 指针。从程序的行为中,我推断this 指针指的是调用该方法的类,而不是由字面量创建的对象。
这似乎是任意的,尽管这是我期望它工作的方式。这是定义的行为吗?跨浏览器安全吗?是否有任何理由说明为什么它超出了“规范所说的”(例如,它是一些更广泛的设计决策/哲学的结果)?精简代码示例:
// inside class definition, itself an object literal, we have this function:
onRender: function() {
this.menuItems = this.menuItems.concat([
{
text: 'Group by Module',
rptletdiv: this
},
{
text: 'Group by Status',
rptletdiv: this
}]);
// etc
}
【问题讨论】:
-
当我这样做的时候确实会发生
var signup = { onLoadHandler:function(){ console.log(this); return Type.createDelegate(this,this._onLoad); }, _onLoad: function (s, a) { console.log("this",this); }}; -
查看this post。对这个关键字的各种用法和行为有一些很好的解释。
标签: javascript language-features language-design