这将返回窗口对象
this returns window object
在我的示例中,我想模拟jQuery.每个方法,因为我创建了JQueryX
对象,该对象可以使用类选择器JQueryX(.classname)
进行选择并将其添加到其属性selection
这是一个数组,现在我被困在this
返回窗口对象的行console.log(this, 'i was clicked');
var x = new JQueryX('.drg');
x.each(function() {
console.log(this);
this.addEventListener("click", function () {
console.log(this, 'i was clicked');
});
});
JQueryX.prototype.each = function (func,paras){
paras = paras || [];
for(var i=0; i<this.selection.length; i++) {
var that = this.selection[i];
console.log(that);
func.apply(that,paras);
}
};
对我来说奇怪的是this
如果我从行中调用它,它会返回我想要的对象console.log(this);
这是因为侦听器函数是由窗口调用的,请尝试:
x.each(function() {
var self = this;
this.addEventListener("click", function () {
console.log(self, 'i was clicked')
});
});
事实上,当您向对象添加回调函数时this.addEventListener(...)
在事件追加时调用函数的不是对象本身,而是窗口。所以这就是为什么this
是你函数中的窗口。
因此,您必须使用 var self = this;
保存对象的引用,然后在调用回调方法时,它将具有对对象的正确引用。
相关文章:
- 调整窗口大小时,可拖动的对象会出现在容器外部
- 如何在选项卡上定义属性'的主窗口对象
- Javascript对象类在单击时打开窗口进行颜色选择,并在更改时替换对象背景颜色
- 可以从Chrome扩展修改窗口对象吗
- 在Backbone.js中为窗口对象指定变量
- 从html锚元素传递窗口对象
- 如何在ReactJS中使用窗口对象
- 在angularJS中使用模态窗口时,在控制器之间共享对象数组
- HackReactor,编码窗口现在可以访问一个名为“”的对象;招生;使用名为“;showApp”;.调用此方法时不带任
- 在加载时调用时,窗口对象的某些变量丢失
- 是否可以模拟 qUnit 测试的窗口位置对象
- 清除 Javascript 中窗口对象中的自定义变量
- 为什么当我尝试将函数绑定到自身时,“this”对象仍然引用窗口
- 窗口对象属性返回一个dom节点
- 使用窗口对象练习我的对象文字函数
- 如何从Chrome扩展访问所有窗口对象
- “this”返回的是[对象窗口],而不是元素
- 将变量打印到控制台时出现意外字符串:[对象窗口]
- 当我提醒“;这个“;鼠标悬停在<td>[对象窗口]弹出-那是什么
- javascript[对象窗口]在一个concat字符串