鉴于以下内容,我如何使其正常工作?
return {
methodA: function() {
return methodB();
},
methodB: function() {
alert("hi");
}
}
答案 0 :(得分:5)
您需要通过this
引用上下文。
var foo = {
methodA: function() {
return this.methodB(); //context
},
methodB: function() {
alert("hi");
}
}
foo.methodA(); //alerts "hi"
答案 1 :(得分:0)
似乎你是从类似函数的模块返回的。安全的方法是不使用this
,而是保持对对象的引用,以便它不会影响函数的调用方式。
function getObj() {
var obj = {
methodA: function() {
return obj.methodB();
},
methodB: function() {
alert("hi");
}
};
return obj;
}
var myObj = getObj();
// Works
myObj.methodA();
// Works but would not work if you were using `this` as suggested by Utkanos.
someDomElement.addEventListener('click', myObj.methodA);