Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Про ecmaScript (https://javascript.ru/forum/misc/24023-pro-ecmascript.html)

Иваннн 15.12.2011 17:18

Про ecmaScript
 
Простите что заtraхал вопросами, но мне не поятно еще вот что:
п.13.2 создание объекта функции п.17 и 18.Не противоречит ли они утверждению что любая цепочка прототипов- конечна, а тут получается замкнутый круг. O._proto_==O?

trikadin 15.12.2011 17:35

"Ивааан! Ты что пишешь, окаянный?" (с)

А если по теме:
Цитата:

Сообщение от Иваннн
п.13.2 ... п.17 ... 18

УК РФ?

Nekromancer 15.12.2011 17:36

trikadin,
http://es5.github.com/
видимо он про это.

Хотя параграфа 17 и 18 в упор не вижу.

trikadin 15.12.2011 17:42

Цитата:

Сообщение от Nekromancer
Хотя параграфа 17 и 18 в упор не вижу.

О чём и речь, собственно. Что он там читает...

Иваннн 16.12.2011 12:02

Уточнения к теме
 
ECMAScript 5.1 параграф 13.2, перечень операций при создании объекта Function пункт 17 и18.

Nekromancer 16.12.2011 12:50

Pseudo code:
var F = new [[Function]], proto = new Object();
proto.defineProperty('constructor', {
value: F,
writable: true,
enumerable: false,
configurable: true
});
F.defineProperty('prototype', {
value: proto,
writable: true,
enumerable: false,
configurable: false
});

NOTE A prototype property is automatically created for every function, to allow for the possibility that the function will be used as a constructor.

Иваннн 16.12.2011 16:02

Nekromancer,
И чо!? :blink:
Псевдокод еще раз подтверждает мои слова и, соответсвенно вопрос (напомню "может ли быть так O_proto_=O"),а по поводу NOTE кто ж спорит.

Nekromancer 16.12.2011 16:11

Иваннн,
Омг, вам плохо видно? В коде то, о чём написано в примечании. И те 2 параграфа вам пишут об этом. Свойство __proto__ тут не причём, его в спецификации вообще нет. Это просто условное имя - proto, точно так же как для функции - F.
Означает, что создаётся обычный объект Object() в переменную proto, этот объект становится прототипов функции - пустой объект - пустой конструктор. И свойства конструктор этого объекта становится функцию.
Что сложного?

Livanderiaamarum 16.12.2011 16:35

ОТВЕЧАЮ ФАКТОМ - ДА, противоречит. Данная цепочка прототипов замкнута и не конечна.
просто обычно цепочки прототипов ведут к объекту Object.prototype, а тут вы сделали замкнутую цепочку которая не ведет к Object.prototype и это противоречит тому что вы прочитали. это можно вытворять искуственно меняя свойство обьектов __proto__ вытворяя с цепочкой что угодно, даже замыкая саму в себе. что бы вы где не читали, но большинство движков JS это позволяют.

просто по спецификации ЗАДУМАНО что это свойство __proto__ не должно быть доступно человеку)) но движки разрешают его изменять искусственно! Нормально ответил да)?

Nekromancer 16.12.2011 17:32

Livanderiaamarum,
Ёб**то ответил, да.


Часовой пояс GMT +3, время: 10:58.