У меня есть такой код:
function demo() {
this.val=5;
function() {
this.val=7;
}();
}
Теперь, когда я запускаю этот код в консоли Firefox или Chrome, он выдает синтаксическую ошибку. Я не понимаю, почему это ошибка, потому что я читал, что функции javascript являются объектами, поэтому, когда я вызываю анонимную функцию, внутри нее this
указывает на демонстрацию функции и должен изменить val
на 7
, поэтому, если я это сделаю
var x=new demo();
x.val; //should give 7
но когда я делаю это
function demo() {
this.val=5;
var f=function() {
this.val=7;
}();
}
window.val; // gives 7
Я не понимаю, если функции являются объектами, то почему this
в анонимной функции указывает на window
, а не на demo
. Пожалуйста, объясните это.
this
будет указывать на глобальный объект... - person Šime Vidas   schedule 23.07.2011foo()
. Другие способы вызова функции: (1) как конструктор и (2) черезcall
/apply
. В этих случаях правила для ключевого словаthis
отличаются. Да, функции - это объекты. - person Šime Vidas   schedule 23.07.2011