访问一系列函数中的内部函数

时间:2019-04-07 03:28:44

标签: javascript function object

我有以下代码,它是一个具有函数数组的变量,但是我无法访问它们,发送错误。我需要它们之间的帮助,但是尝试访问其中一个时,会给我一个错误。

var mivarobject = function(){
  this.helpers = {
    function1: function(){
      return 1;
    },
    function2: function(){
      return this.helpers.function1() + 1;
    },
  };
};

console.log((new mivarobject()).helpers.function2());

如何在它们之间进行访问?

2 个答案:

答案 0 :(得分:2)

使用bind或箭头功能:

var mivarobject = function() {
  this.helpers = {
    function1: function() {
      return 1;
    },
    function2: function() {
      return this.helpers.function1() + 1;
    }.bind(this),
  };
};

console.log((new mivarobject()).helpers.function2());


var mivarobject = function() {
  this.helpers = {
    function1: function() {
      return 1;
    },
    function2: () => this.helpers.function1() + 1,
  };
};

console.log((new mivarobject()).helpers.function2());

答案 1 :(得分:1)

如果您以function2的方式调用helpers,则其this的值将设置为helpers。如果function2要调用helpers的另一个方法,则可以将其作为this的属性来访问。基本上,对this.helpers的引用既多余又不正确。

将function2定义更改为

function2: function(){
  return this.function1() + 1;
}

,它将按预期工作。