Вложенная функция в литеральном Объекте

если в литеральном объекте я пытаюсь сослаться на функцию с помощью "этой" внутренней части вложенное свойство/функция, это не работает. Почему? Вложенное свойство имеет свой собственный объем?

Например, я хочу назвать f1 из d.f2:

var object = {    

  a: "Var a",
  b: "Var b",
  c: "Var c",

  f1: function() {
    alert("This is f1");
  },

  d: {
      f2: function() {
       this.f1();
    }
  },

  e: {
      f3: function() {
        alert("This is f3");
     }
  }
}

объект f1 ();//Работа
объект d.f2 ();//не Работают. объект e.f3 ();//Работа

Спасибо, Andrea.

6
задан Andrea 18 April 2010 в 10:20
поделиться

1 ответ

это относится к d внутри f2 , а не к объекту . Вы можете сохранить ссылку на объект, или вызвать объект напрямую, или использовать call / apply , чтобы вызвать функцию и явно сообщить ей, что this означает внутри этой функции:

object.d.f2.call(object); // now this refers to object inside f2
9
ответ дан 8 December 2019 в 18:34
поделиться
Другие вопросы по тегам:

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