если в литеральном объекте я пытаюсь сослаться на функцию с помощью "этой" внутренней части вложенное свойство/функция, это не работает. Почему? Вложенное свойство имеет свой собственный объем?
Например, я хочу назвать 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.
это
относится к d
внутри f2
, а не к объекту
. Вы можете сохранить ссылку на объект, или вызвать объект
напрямую, или использовать call
/ apply
, чтобы вызвать функцию и явно сообщить ей, что this
означает внутри этой функции:
object.d.f2.call(object); // now this refers to object inside f2