Цитата:
Цитата:
Цитата:
String.prototype.amIObject = "Nope"; var str = "string"; str.amIObject = "Yes!"; alert(str.amIObject) |
B@rmaley.e><e, спасибо, что тратите на меня время :) Перешел по ссылке "стандарт", прочитал. Хочу попросить Вас перейти по этой window, прочитать самое первое предложение, а после еще раз ответить на мой вопрос)
Цитата:
Ваш пример на данный момент понять не могу. Про prototype только читаю))) p.s.: я не строю из себя умника. Просто хочу понять, как оно устроено :yes: |
Цитата:
Цитата:
С тем, что window — глобальный объект и именно на него будет указывать this в этом случае, никто не спорит. Но вместе с тем, во внутренней механике стандарта используется именно null. window не берётся каким-либо магическим образом из окруженая. И, кстати, в strict mode ES5 this не становится глобальным объектом в случае var a = function () { alert(this); }; a(); a.call(null); (a = a)(); "use strict"; var a = function () { alert(this); }; a(); a.call(null); (a = a)(); Цитата:
Фленеган же зачем-то погружается в особенности реализации, которые не зависят от стандарта и могут сильно варьироваться. Строки наверняка реализованы с механизмом copy-on-write. |
Цитата:
Это я ЗНАЮ)! ну почему НИ КТО не читает внимательно текст топика)!!!!! Вот в чем вопрос, почему reference меняется на VALUE? От куда именно скобки берут ТО что возвращать мне?? Слева от ровно или справа? Слева от ровно по окончанию дествия лежит ссылка. справа тоже лежит ссылка. Значит скобки берут значение И НЕ СЛЕВА ОТ РОВНО и НЕ СПРАВА ОТ РОВНО, тогда откуда)?? или может происходит следущее?? (bar.baz = bar.baz)() тут яваскрипт начинает вычислять то что в скобках. и получает следущее (bar.baz /*и тут ссылка*/ = bar.baz /*тут ссылка*/ )() Простое присваивание ( = ) Значение нетерминала ВыражениеПрисваивания : ЛевостороннееВыражение = ВыражениеПрисваивания вычисляется по следующей схеме: 1. Вычислить значение ЛевостороннегоВыражения. 2. Вычислить значение ВыраженияПрисваивания. 3. Вызвать ПолучитьЗначение(Результа (2)). 4. Вызвать ЗаписатьЗначение(Результа (1), Результат(3)). 5. Вернуть Результат(3). по скольку возвращается результат 3, то есть ЗНАЧЕНИЕ правого операнда ровно происходит следущее: (baz /*тут ЗНАЧЕНИЕ*/)() потом вступают в дело скобки группировки, и начинают смотреть ЧТО ВНУТРИ НИХ НИХ находится. смотрят - там значение, а не ссылка и возвращают значение. Дальше идут в ход скобки вызова и вызывают эту функцию делая её this равным global(null? но работает как global) __________________________________________________ моя ошибка была в том что я думал что оператор ровно возвращает не ЗНАЧЕНИЕ правого выражения, а ссылку левого выражения)). и это я и пытался выяснить, и как оказалось тут очень мало людей понмиающих как работает javascript. но все ровно всем спасибо) пошел учить спецификацию. |
Цитата:
Исходя из вышесказанного выражение типа: (foo.bar = foo.bar)(); не определяются как Reference, именно по этому возращается Window (в basic mode). Цитата:
11.2 Левосторонние выражения 11.13.1 Простое присваивание ( = ) Цитата:
template <class T> T GetValue(const T &value); В этом случае, формально значение передается по ссылке. |
|
всем спасибо)
Цитата:
|
Livanderiaamarum, читать спецификацию — хорошая идея. Возможно, тогда Вы поймёте, что ничто, кроме примитивов (элементарных типов в терминологии стандарта) по значению нигде в процессе выполнения программы появиться не может. Вы никогда не сможете получить объект по значению, только по ссылке.
|
Цитата:
Простое присваивание ( = ) Значение нетерминала ВыражениеПрисваивания : ЛевостороннееВыражение = ВыражениеПрисваивания вычисляется по следующей схеме: 1. Вычислить значение ЛевостороннегоВыражения. 2. Вычислить значение ВыраженияПрисваивания. 3. Вызвать ПолучитьЗначение(Результа( 2)). 4. Вызвать ЗаписатьЗначение(Результа( 1), Результат(3)). 5. Вернуть Результат(3). возвращается ИМЕННО VALUE правой стороны а не ссылка. если в правой стороне обьект то возвращается VALUE обеькта. Сколько можно уже это мусолить? вам же на примерах показали. Суть моего вопроса в том, ЧТО ИМЕННО возвращает ровно, как оно берет и что куда кладет. И как выяснилось возвращается не ссылка, а значение, которое посчиталось справа от знака ровно. Консоль показывала то же самое, но мне было интересно почему. _______________________________________ п.с. получить обьект не по ссылке а по значению можно написав: {a:20} //это обьект который не имеет ни какой ссылки, и я могу с ним работать в процессе выполнения кода, что противоречит вашим словам, и именно по этому я и назвал их бредом. уж такое сморозить ЧИТАЯ спецификацию? стыдно должно быть вам.... вы наверное не даже не знаете про типы VALUE и REFERENCE ? |
пипец, зашел на этот сайт думая что тут профессионалы сидят.... обломался(((( тут оч мало народа который действительно шарит, в том числе и я((
что печально. |
Часовой пояс GMT +3, время: 02:26. |