我需要从子对象调用对象showMe()方法,在调试时这不能识别showMe()方法。
如何从方法中引用对象方法???
代码如下 -
function myObj(n) {
this.name = n;
this.frame = $('<div />');
var subFrame = $('<div />');
subFrame.on("click", function () {
**//how do I reference this.showName() from here ?**
});
this.frame.append(subFrame);
this.showName = function (nn) {
alert(nn);
};
}
$(function () {
var a = new myObj("Test");
});
答案 0 :(得分:1)
执行此操作的常用方法是定义var that = this
,并在函数正文中引用that
。
你也可以使用bind
,但是你放弃了本地范围。
答案 1 :(得分:0)
您实际上只需将对象的引用传递给on()
作为数据,
function myObj(n) {
this.name = n;
this.frame = $('<div />');
var subFrame = $('<div />');
subFrame.on("click", {myObj : this}, function (e) {
e.data.myObj.showName();
});
this.frame.append(subFrame);
this.showName = function (nn) {
alert(nn);
};
}
$(function () {
var a = new myObj("Test");
});