JavaScript无法访问兄弟方法

时间:2016-05-06 12:26:07

标签: javascript

鉴于以下内容,我如何使其正常工作?

return {

    methodA: function() {
        return methodB();
    },
    methodB: function() {
        alert("hi");
    }
}

2 个答案:

答案 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);