Нет a
для вашего x
для извлечения, поэтому вы получаете undefined
.
let obj = {
a: 10,
fun: function () {
console.log(this.a);
}
};
let x = obj.fun;
x();
Ваш x
указывает на function
как obj.fun
, Но obj.fun.x
не существует, поэтому это приведет к undefined
.
Попробуйте следующее:
let obj = {
a: 10,
fun: function () {
console.log(this.a);
}
};
let x = obj;
x.fun();
или
let obj = {
fun: function () {
this.a = 10;
console.log(this.a);
}
};
let x = obj.fun;
x();
Они оба приведут к 10
как вывод.
Оба эти примера имеют свойство x в x
.
ПРИМЕЧАНИЕ. Если сделать let a = 10
в функции fun
, вы не получите результат this.a
потому что такое объявление работает как объявление параметра private
в C / JAVA et c.