var f = function() {
this.x = 5;
(function() {
this.x = 3;
})();
console.log(this.x);
};
var obj = {x: 4,
m: function() {
console.log(this.x);
}
};
obj.m.call(f) //--> undefined
Почему в данном случае вернется undefined, а не 5?
Потому что в call ты в качестве аргумента передаешь объект, который и будет this в вызываемой функции. А здесь ты передаешь функцию. Функция - это тоже объект, но у нее нет свойства x, поэтому возвращается undefiened.
Я не совсем понимаю, что ты хочешь сделать, но чтобы получить 5, передавая функцию, ты можешь сделать так.
Самой функции назначить свойство x (функции - это тоже объекты, так что так можно сделать).
var f = function() {};
f.x = 5;
Вернуть из функции объект со свойством x и передать в call не функцию, а вызов функции.
var f = function() {
return { x: 5};
};
//Твой код
obj.m.call(f())
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском
Какая сделать явную специализацию для функции foo оставив const T* arr??
Что нужно сделать, чтобы спрайт не растягивался в месте с окном?