Livanderiaamarum,
var foo = function() {
return this;
};
var bar = {
baz: function () {
return this;
}
};
alert([
foo(), //Window
foo.prototype.constructor(), //Object
bar.baz(), //Object
(bar.baz)(), //Object
(bar.baz = bar.baz)(), //Window
(bar.baz = bar.baz()), //Object
bar.baz //Object
].join('\n'));
Рассмотрим подробнее, что происходит с:
(bar.baz = bar.baz)();
В этом случае, согласно спецификации вызывается метод GetValue().
Это значит, что тип
Reference заменяется
Function и вызов фунции происходит уже в
Window, т.к.
this будет
null
var bar = {
baz: function () {
return this;
}
};
var foo = bar.baz;
alert([
foo(), //Window
(some = bar.baz)(), //Window
(1, bar.baz)() //Window
].join('\n'));