Доступ к функции в массиве функций - PullRequest
0 голосов
/ 07 апреля 2019

создайте переменную, где находится функция, и внутри этой функции есть набор массивов функций, я хочу получить доступ к третьему уровню, но не могу, отправьте мне ошибку, у кого-то есть идея, что я делаю неправильно?

var mivarobject = function(){

  // array functions
  helpers = {

    // functions
    function1 : function(){
      return 1;
    },
    function2 : function(){
      return 2;
    },

  }

}


console.log(mivarobject.helpers.function1());

При этом я получаю следующую ошибку: Uncaught TypeError: Невозможно прочитать свойство 'function1' из неопределенного

Ответы [ 4 ]

2 голосов
/ 07 апреля 2019

Вам не хватает ключевого слова new, если вы собираетесь использовать mivarobject в качестве класса.

Кроме того, вы объявляете helpers во всем мире. Добавьте this, чтобы создать экземпляр свойства mivarobject.

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

console.log((new mivarobject).helpers.function1());
0 голосов
/ 07 апреля 2019

Ваш mivarobject просто является функцией, которая возвращает void - ничего, тогда mivarobject.helpers равен undefined, потому что функция в Js не имеет свойства helpers.

У нас есть some способов получить вашу точку, используйте mivarobject как нормальную функцию, функция возвращает helpers объект (не массив), когда вы хотите использовать function1, вам нужно call mivarobject функция, например: console.log(mivarobject.helpers.function1());

Использование immediate function - это мой путь, создайте функцию и немедленно вызовите ее, mivarobject станет объектом.

var mivarobject = (function() {
    // array functions
    helpers = {

        // functions
        function1: function() {
            return 1;
        },
        function2: function() {
            return 2;
        },

    }

    return helpers;
})();


console.log(mivarobject.helpers.function1());
0 голосов
/ 07 апреля 2019

Вам необходимо вернуть helpers и позвонить mivarobject:

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

console.log(mivarobject().function1());
0 голосов
/ 07 апреля 2019

mivarobject - это функция, поэтому вы можете вернуть значение из нее, а затем вам нужно получить доступ к function1 для возвращенного значения

var mivarobject = function(){
  let helpers = {
    function1 : function(){
      return 1;
    }
  }
  return helpers
}

console.log(mivarobject().function1());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...