gpt4 book ai didi

javascript - 这个 JavaScript 习惯用法 : var self = this? 的基础是什么

转载 作者:IT老高 更新时间:2023-10-28 11:03:51 26 4
gpt4 key购买 nike

我在 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 的引用,即使上下文正在发生变化。这是事件处理程序中经常使用的一种技术(尤其是在闭包中)。

编辑:请注意,现在不鼓励使用 selfwindow.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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com