Итак, я читал книгу Professional Javascript для веб-разработчиков и натолкнулся на следующие примеры.Javascript это undefined после назначения функции
var object = {
name: "my Object",
getName: function() {
return this.name;
}
}
Затем автор показывает следующие результаты:
object.getName(); // "my Object"
(object.getName)(); // "my Object"
(object.getName = object.getName)() // "undefined"
Я понимаю, первый случай, но имеют следующие вопросы для случая 2 и случая 3.
Случай 2: Что положить круглые скобки вокруг object.getName? До сих пор я знаю только, что вы можете поместить круглые скобки вокруг анонимной функции, чтобы вызывать ее немедленно (непосредственное выражение функции). Но что, если функция не анонимна?
Дело 3: Почему this
не поддерживается после назначения?
см. Это [сообщение] (http://stackoverflow.com/questions/3127429/how-does-the-this-keyword-work) о 'this' – Grundy
Ввод функции вокруг' object.getName' в случае 2 ничего не делает; поэтому вы получаете тот же результат, что и случай 1. – Pointy
В браузерах последний пример не возвращает * undefined *, он возвращает пустую строку. Функция вызывается без установки * this *, поэтому она будет по умолчанию для глобального объекта (или не определена в строгом режиме, но это не строгий режимный код), который является * окном * в браузере, а у оконных объектов по умолчанию * name * свойство, которое, если не установлено какое-либо значение, будет пустой строкой. – RobG