На данный вопрос уже ответили:
уважаемые пользователи. Хочу задать один вопрос, чтобы прояснить одну вещь, немного непонятную. Про то, куда указывает контекст
var object1 = {
"attr1": function(){
console.log(this);
return 1+2;
}(),
"attr2": function(){
console.log(this);
return 1+2;
},
get "attr3"(){
console.log(this);
return 1+2;
}
}
console.log(typeof object1.attr1); //Тип Number, а This указывает на глобальный объект
console.log(typeof object1.attr2()); //Тип Function, а This указывает на объект object1
console.log(typeof object1.attr3); //Тип Number, а This указывает на объект object1
Почему контекст attr1 указывает на глобальный объект? Прошу прощения за такой глупый вопрос, сам никак не соображу
Почему контекст attr1 указывает на глобальный объект? Прошу прощения за такой глупый вопрос, сам никак не соображу
"attr1": function(){
console.log(this);
return 1+2;
}(),
Здесь сразу выполняется функция. В данном случае, в св-во attr1 запишется именно значение, которое вернула функция ( получится 3 )
Функция же эта вызывается в глобальном контексте, так как объект еще не создан, идет только его инициализация
Если очень грубо упростить, то ваш код примерно равен вот этому коду:
var object1 = {};
object1.attr1 = function () {}();
object1.attr2 = function () {};
// и так далее
Вот тут главное отличие
// функция сначала вызовется, а только потом присвоится значение attr1
object1.attr1 = function () {}();
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости