Вызывающий метод в другом методе в JavaScript?

Я использую NLog, и я очень удовлетворен. Исходный код правильно написан, и легко расширить и изменить. Документация хороша, и очень легко настроить.

Некоторые Ссылки:

11
задан pbialy 29 June 2017 в 02:59
поделиться

3 ответа

Я думаю, проблема в том, что когда this.C () выполняется внутри функции, на которую ссылаются B , this ] относится к объекту, содержащему B , то есть объекту A . (Предполагается, что B () вызывается в контексте A )

Проблема в том, что C не существует на объекте A , поскольку он определен в B . Если вы хотите вызвать локальную функцию C () в B , просто используйте C () .

EDIT: Кроме того, я не уверен, что то, что вы опубликовали, является правильным JavaScript. В частности, B должен быть определен таким образом, поскольку вы не можете использовать синтаксис object: property внутри функции.

B: function()
{
  var test='test';
  var result='t1';

  var C = function()
  {
    this.test='test1';
    return 'test1';    
  }

 result=C();  
 return result; 
}
5
ответ дан 3 December 2019 в 01:45
поделиться

Вы должны быть осторожны, когда используете this для идентификации чего-либо в Javascript, потому что каждый раз, когда вы меняете область видимости, "this" изменяется.

Назначение ссылки "this" его собственная переменная помогает обойти это.

var a = new function() {
    var self = this;

    self.method = function() { alert('hiya'); };

    var b = function() {
        this.method(); // this isn't 'a' anymore?
        self.method(); // but 'self' is still referring to 'a'
    };

};
26
ответ дан 3 December 2019 в 01:45
поделиться

I am actually surprised that your code doesn't give you error on the 'C:' line.

Anyway, your syntax to define a function is not correct. Define it using the var keyword. Also, notice that I created the 'closure' so that the function C can access 'this'. See the code below:

A={

  CA: function()
  {
    this.B();
  },

  B: function()
  {
    var test='test';
    var result='t1';

    var self = this;
    var C = function()
            {
              self.test='test1';
              .....
              .....
              return 'test1';    
            }

   result=C();
   return result; 
  }
}

If you want to assign C to 'this' object, you can also do:

A={

  CA: function()
  {
    this.B();
  },

  B: function()
  {
    var test='test';
    var result='t1';

    var self = this;
    this.C = function()
             {
              self.test='test1';
              .....
              .....
              return 'test1';    
             };

   result= this.C();
   return result; 
  }
}
4
ответ дан 3 December 2019 в 01:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: