12
|
12
моё недоумение основано лишь на том что человек достаточно туп чтобы понять что я не написал РОВНО символом = а написал его словом РОВНО. из контекста это можно было понять, что впрочем все адекватные люди поняли это.... |
12
|
Цитата:
|
Цитата:
var a = {};
(a = a).b = 5;
alert(a.b)
|
var foo = {
bar: function () {
alert(this);
}
};
foo.bar(); // Reference, OK => foo
(foo.bar)(); // Reference, OK => foo
(foo.bar = foo.bar)(); // Value => global?
в последней строчке скобки (foo.bar = foo.bar) возвращают Значение обьекта, а не ссылку на него. Почему? |
эт еще кто из нас дурачек :D Какие Reference? У вас идет проверка объекта вызова.
var foo = { bar: function() { alert("this === window: " + (this === window) + "\nthis === foo: " + (this === foo)); } };
foo.bar(); // foo
(foo.bar)(); // foo
(foo.bar = foo.bar)(); // window
|
Цитата:
var foo = {
bar: function () {
alert(this);
}
};
foo.bar.x = "Hello!";
(foo.bar = foo.bar).x = "lalala";
alert(foo.bar.x)
|
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'));
|
Господа, добрый день :)
monolithed, разрешите задать два вопроса: 1. Цитата:
2. Цитата:
Livanderiaamarum, практически цитата из книги: Операции над элементарными типами производятся по значению, а над ссылочными типами – по ссылке. Числа и логические величины – это элементарные типы; объекты - ссылочные. Массивы и функции – это специализированные типы объектов. Строки сравниваются по значению. |
| Часовой пояс GMT +3, время: 09:22. |