Javascript Object Oriented: как пройти функцию внутри объекта? - PullRequest
0 голосов
/ 02 февраля 2011

допустим, это мой код

var myObject = {

    varA: true,
    varB: false,

    init: function() {

        //do something
    },


    doThis: function() {

        //do this

        function doThat(){

           //do that   

        }

    }

}

как мне вызвать (если я могу) функцию doThat() "снаружи" объекта (как при нажатии на страницу)?возможно ли это?

Я работаю / взламываю кусок кода, оставленный предыдущим разработчиком, и я не хочу переписывать все из srcatch, поэтому любой хороший обходной путь хорошо принят!спасибо

Ответы [ 3 ]

1 голос
/ 02 февраля 2011

Нет способа сделать это без изменения myObject;doThat фактически является частной функцией.Есть несколько способов обойти это, например, сделать doThat свойством doThis.Это не рекомендуется, но вы действительно сказали, что взломали.

1 голос
/ 02 февраля 2011

Вы не можете.

Функция doThat не доступна ни для одной из внешних областей. Если вы как-то не измените doThis для возврата ссылки на doThat, нет способа вызвать его, кроме объявления функции где-то еще.

0 голосов
/ 02 февраля 2011

Вы не можете.doThat не является свойством doThis или myObject.Вам придется изменить код, чтобы открыть вложенную функцию doThat.

var myObj = {
  doThis: function() {
    console.log("doing this");
    return function doThat() { console.log("doing that"); };
  } 
};

Вышеприведенное позволит вам сделать:

myObj.doThis()(); // "doing this" / "doing that"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...