【发布时间】:2015-06-01 07:06:34
【问题描述】:
我在WebKit HTML 5 SQL Storage Notes Demo的源代码中看到了以下内容:
function Note() {
var self = this;
var note = document.createElement('div');
note.className = 'note';
note.addEventListener('mousedown', function(e) { return self.onMouseDown(e) }, false);
note.addEventListener('click', function() { return self.onNoteClick() }, false);
this.note = note;
// ...
}
作者在某些地方(函数体)使用self,在其他地方(方法参数列表中定义的函数体)使用this。这是怎么回事?现在我已经注意到了一次,我会开始到处看到它吗?
【问题讨论】:
-
这是一个JS语言特性,叫做“词法闭包”。
-
可能重复:var self = this?。
-
这里明确解释了 THIS 的概念scotch.io/@alZami/understanding-this-in-javascript
-
此答案stackoverflow.com/a/20279485/5610569 中的相关示例(针对问题“如何在回调中访问正确的
this?”)
标签: javascript scope closures