- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我在 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。这是怎么回事?现在我已经注意到了一次,我会开始到处看到它吗?
最佳答案
查看 article on alistapart.com . (编者:文章自最初链接后已更新)
self
被用于维护对原始 this
的引用,即使上下文正在发生变化。这是事件处理程序中经常使用的一种技术(尤其是在闭包中)。
编辑:请注意,现在不鼓励使用 self
为 window.self
存在并且如果您不小心有可能导致错误。
您对变量的称呼并不特别重要。 var that = this;
很好,但名称没有什么神奇之处。
在上下文中声明的函数(例如回调、闭包)将可以访问在相同范围或更高范围内声明的变量/函数。
例如一个简单的事件回调:
function MyConstructor(options) {
let that = this;
this.someprop = options.someprop || 'defaultprop';
document.addEventListener('click', (event) => {
alert(that.someprop);
});
}
new MyConstructor({
someprop: "Hello World"
});
关于javascript - 这个 JavaScript 习惯用法 : var self = this? 的基础是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/962033/
我编写的代码主要供个人使用,但我正在考虑发布我最初开发供个人使用的应用程序(科学模拟/可视化)。 我的一个习惯是在类中使用一个main方法来单独测试类的运行情况。我认为这在某种程度上可能是不好的(毫无
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: How do I convince programmers in my team to do TDD? 在从
假设我想测试是否有一个名为“Z”的驱动器。第一步是这样的; Get-PSProvider | Select-Object -Property Drives 这个给我; Drives: ... {C,
这是对 an old answer to a question about the necessity of functools.partial 的一种跟进: 虽然这个答案非常清楚地解释了这种现象及其
Perl 习惯很难改掉。两种语言之间的变量声明、作用域、全局/局部是不同的。是否有一组推荐的 python 语言习语可以使从 perl 编码到 python 编码的过渡不那么痛苦。 细微的变量拼写错误
我是一名优秀的程序员,十分优秀!