我对使用jquery的对象有一个小问题。既然jquery覆盖了这个指针,我就不能调用我的子方法而不求助于将这个指针保存在该变量中这是一种首选方式还是有更好的解决方案?有没有办法将this指针保存在对象中(就像具有其他名称的类方法)?
尝试用javascript学习javascript好的部分,但我不认为我理解所有的怪癖:)。
//from javscript the good parts
if (typeof Object.create !== 'function') {
Object.create = function (o) {
var F = function () {};
F.prototype = o;
return new F();
};
}
var Tester = {
printData: function (text) {
console.log(text)
},
start: function () {
var that = this;
jQuery('id').click(function () {
that.printData('firstColumn')
});
}
};
var test = Object.create(Tester)
test.start()
最诚挚的问候安德斯奥尔梅 猜测这与Overwritten "this" variable problem or how to call a member function?
类似答案 0 :(得分:1)
总的来说,是的,这就是你必须要做的事情。
在这种特定情况下,jQuery为您提供了一些帮助。
jQuery('id') // <-- should be #id ?
.bind('click', { myThing : this }, function (e) {
e.data.myThing.printData('firstColumn');
})
;
请参阅docs for bind()
。在内部,jQuery只是做与你在那里完全相同的事情,所以它在性能方面不会产生任何显着差异,但它可能会使你的代码更易于管理。