gpt4 book ai didi

javascript - JavaScript 对象中的 "this"与 jQuery $(this)

转载 作者:行者123 更新时间:2023-11-30 10:09:50 26 4
gpt4 key购买 nike

我遇到了一个问题。我有一个对象方法 foo 定义为:

var obj = {
foo: function() {
$('.personName').mouseover(function() {
this.highlight($(this).attr('faceIndex'));
});
}
}

所以应该发生的是,每当鼠标光标在 personName 类型的 HTML 对象上时,应该使用 faceIndex 调用 obj.highlight 方法 来自 HTML 对象的值作为参数。但是,我显然在两个 this 之间存在冲突:jQuery 之一和 JavaScript 之一(从 obj 中引用 obj)。

我能(应该)做什么?我是否违反了一些良好的编程习惯?

最佳答案

解决此问题的典型模式是使用局部变量来存储第一个 this:

var obj = {
foo: function() {
var _this = this;
$('.personName').mouseover(function() {
_this.highlight($(this).attr('faceIndex'));
});
}
}

使用 TypeScript 或 ES6 编译器等语言可以更轻松地使用此模式,而无需每次都手动编写 _this

关于javascript - JavaScript 对象中的 "this"与 jQuery $(this),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27115977/

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