Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #51 (permalink)  
Старый 20.03.2009, 20:56
Кандидат Javascript-наук
Отправить личное сообщение для kefi Посмотреть профиль Найти все сообщения от kefi
 
Регистрация: 12.03.2009
Сообщений: 148

Сообщение от Zeroglif
Потому что "дополнительные мульки" (не-стандарт)
Да ,уже догадался. Но вот что хотелось бы понять -
что же является стандартом javascript ?.
- ECMA - вроде как первая версия, а теперь на какую нужно опираться и где ее взять ?
- совместимы ли спецификации снизу вверх ?
Ответить с цитированием
  #52 (permalink)  
Старый 20.03.2009, 21:12
...
Отправить личное сообщение для Zeroglif Посмотреть профиль Найти все сообщения от Zeroglif
 
Регистрация: 09.03.2008
Сообщений: 216

Сообщение от kefi
где ее взять
http://www.ecma-international.org/pu...s/Ecma-262.htm
Или на этом сайте есть переведённый вариант этого же документа (если нравится читать по-русски).
Сообщение от kefi
совместимы ли спецификации снизу вверх ?
Стараются.
Ответить с цитированием
  #53 (permalink)  
Старый 20.03.2009, 22:54
Кандидат Javascript-наук
Отправить личное сообщение для kefi Посмотреть профиль Найти все сообщения от kefi
 
Регистрация: 12.03.2009
Сообщений: 148

Насчет версий не понял, но
Вот еще вопросик :
известно, что Function.prototype.constructor указывает на Function,
Но кто считается действительным конструктором объекта-экземпляра Function ?
То, что Function создал самого себя сам как-то не укладывается в голове.
Ответить с цитированием
  #54 (permalink)  
Старый 21.03.2009, 16:51
...
Отправить личное сообщение для Zeroglif Посмотреть профиль Найти все сообщения от Zeroglif
 
Регистрация: 09.03.2008
Сообщений: 216

Сообщение от kefi
Известно, что Function.prototype.constructor указывает на Function. Но кто считается действительным конструктором объекта-экземпляра Function ? То, что Function создал самого себя сам как-то не укладывается в голове.
'Function' - это встроенный объект, тот, который "available whenever an ECMAScript program begins execution", его "действительный конструктор" остался в тени, за рамками стандарта.

'Function.prototype' - это другой встроенный объект с аналогично неизвестной историей конструирования. Для нас важны не встроенные (с ними и так всё понятно), а новые функции, появляющиеся в программе через 'new Function', для них и предусмотрено наследуемое свойство 'constructor', которое является родным свойством функции 'Function.prototype', но работает прежде всего для связи вновь созданных функций со своим "действительным конструктором", с 'Function'...

Последний раз редактировалось Zeroglif, 21.03.2009 в 17:05.
Ответить с цитированием
  #55 (permalink)  
Старый 21.03.2009, 20:10
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от kefi
То, что Function создал самого себя сам как-то не укладывается в голове.
Движок его создал и записал в поле constructor ссылку на созданный объект.
__________________
Тонкости ECMAScript
Ответить с цитированием
  #56 (permalink)  
Старый 28.03.2009, 18:32
Кандидат Javascript-наук
Отправить личное сообщение для kefi Посмотреть профиль Найти все сообщения от kefi
 
Регистрация: 12.03.2009
Сообщений: 148

Вот еще обнаружился непонятный интересный факт :
Если имеем
function X(){this.fld=123;} ; X.prototype.fld=1234;
x = new X() ;
То: x.fld!=X.prototype.fld , x==123
Т.е. как же так получается для x : поле fld берется не из прототипа x , а из нутренностей его конструктора ? Где же логика делегирования свойств прототипа его потомку ?

PS. С методами та же петрушка.

Последний раз редактировалось kefi, 28.03.2009 в 18:34.
Ответить с цитированием
  #57 (permalink)  
Старый 28.03.2009, 18:50
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

kefi,
ну, вообще-то так и должно быть.
при запросе свойства у объекта, оно сперва ищется у него самого.
затем у его прототипа.потом выше.
в данном случае вы в конструкторе определили объекту собственное свойство, и поэтому оно берется из самого объекта, а не прототипа
Ответить с цитированием
  #58 (permalink)  
Старый 28.03.2009, 18:57
Кандидат Javascript-наук
Отправить личное сообщение для kefi Посмотреть профиль Найти все сообщения от kefi
 
Регистрация: 12.03.2009
Сообщений: 148

2 Gvozd >
Да, действительно , уже понял. Несколько увлекся ...
Ответить с цитированием
  #59 (permalink)  
Старый 28.03.2009, 19:14
Кандидат Javascript-наук
Отправить личное сообщение для kefi Посмотреть профиль Найти все сообщения от kefi
 
Регистрация: 12.03.2009
Сообщений: 148

Правда, вот чего не понял :
В каких случаях имеет смысл держать одинаковые имена свойств в прототипе и в Конструкторе ?
Ответить с цитированием
  #60 (permalink)  
Старый 28.03.2009, 19:40
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

если вы назначаете в конструкторе свойство объекта, и не будуте при использовании объекта удалять это свойство, то прототип не будет использован.
то есть смысла в таком случае в нем никакого.
смысл держать свойство в прототипе, только для оформления кода в таком случае.хотя это сомнительное удовольствие.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с javascript andruhin Общие вопросы Javascript 12 04.05.2012 10:05
Программист на JavaScript (удалённо) Vadym Работа 1 28.01.2009 13:57
Приглашаем специалиста по JavaScript. Мск, от 75 000 руб. arturus Работа 30 14.01.2009 02:30
JavaScript Developer, Санкт-Петербург (2000 - 2500 $) lampa Работа 3 26.08.2008 15:41
Нужен Старший разработчик JavaScript Yandex Работа 17 19.08.2008 16:43