Про ecmaScript
Простите что заtraхал вопросами, но мне не поятно еще вот что:
п.13.2 создание объекта функции п.17 и 18.Не противоречит ли они утверждению что любая цепочка прототипов- конечна, а тут получается замкнутый круг. O._proto_==O? |
"Ивааан! Ты что пишешь, окаянный?" (с)
А если по теме: Цитата:
|
|
Цитата:
|
Уточнения к теме
ECMAScript 5.1 параграф 13.2, перечень операций при создании объекта Function пункт 17 и18.
|
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. |
Nekromancer,
И чо!? :blink: Псевдокод еще раз подтверждает мои слова и, соответсвенно вопрос (напомню "может ли быть так O_proto_=O"),а по поводу NOTE кто ж спорит. |
Иваннн,
Омг, вам плохо видно? В коде то, о чём написано в примечании. И те 2 параграфа вам пишут об этом. Свойство __proto__ тут не причём, его в спецификации вообще нет. Это просто условное имя - proto, точно так же как для функции - F. Означает, что создаётся обычный объект Object() в переменную proto, этот объект становится прототипов функции - пустой объект - пустой конструктор. И свойства конструктор этого объекта становится функцию. Что сложного? |
ОТВЕЧАЮ ФАКТОМ - ДА, противоречит. Данная цепочка прототипов замкнута и не конечна.
просто обычно цепочки прототипов ведут к объекту Object.prototype, а тут вы сделали замкнутую цепочку которая не ведет к Object.prototype и это противоречит тому что вы прочитали. это можно вытворять искуственно меняя свойство обьектов __proto__ вытворяя с цепочкой что угодно, даже замыкая саму в себе. что бы вы где не читали, но большинство движков JS это позволяют. просто по спецификации ЗАДУМАНО что это свойство __proto__ не должно быть доступно человеку)) но движки разрешают его изменять искусственно! Нормально ответил да)? |
Livanderiaamarum,
Ёб**то ответил, да. |
Часовой пояс GMT +3, время: 10:58. |