Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DOM (HTML) Element в IE - от кого наследуется? 
:(
    Опции темы
dsCode
Дата 20.1.2008, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 565
Регистрация: 8.9.2007
Где: Saint-Petersburg

Репутация: 19
Всего: 26



наконец добрался до форума =)

Во избежание последующих недоразумений, вызванных придиркой к словам "особо одаренными индивидуумами", я подкорректировал пару фраз в своей статье.

AKS
Цитата(AKS @  13.1.2008,  19:34 Найти цитируемый пост)
Ничего "он" не создает!

а, кстати, я точно не знаю, что происходит в соответствии со спецификацией - создается ли объект для примитива (и затем уничтожается после проведения нужной операции) или же происходит преобразование типа примитива к объекту? А с другой стороны - что такое преобразование тогда? Это получается - уничтожение оригинала, создание новой сущности нового типа, но с данными старой сущности. Или нет?

Код

var n = 1; // примитив
var s = n.toString(); // кто здесь n, если ему доступен "метод"? Созданный новый объект?
alert([typeof n, typeof s]); // а здесь n - снова примитив.
//Получается "созданный (преобразованный n) объект" был уничтожен после применения операции toString


или как это более точно рассказать?


--------------------
the .code inside
:my music
PM MAIL WWW ICQ Jabber   Вверх
AKS
Дата 20.1.2008, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



Цитата(dsCode @  20.1.2008,  18:05 Найти цитируемый пост)
...как это более точно рассказать?

Не будем рассказывать, будем цитировать (ссылаться, правда, придется на тех, кто, по мнению некоторых, не достаточно компетентен, но нам с Вами, думаю, будет достаточно ;) ):
Цитата(Proposed ECMAScript 4th Edition – Language Overview)

ES3 has a notion of primitive values that are not true objects, and a method call on a “primitive string” results in the allocation of a new instance of the wrapper class String, on which the method is subsequently called.

Ну а создает этот объект-оберку, конечно же, не примитивное значение. "Порывшись" в описании интерфейса SpiderMonkey, можно найти кое-какие намеки:
Цитата(JSAPI Reference)

...For example, JS_ValueToObject(cx, s) where s is a string creates a new String wrapper object
...JS_ValueToString always returns a pointer to a string. The original value is untouched.


PM MAIL   Вверх
Zeroglif
Дата 21.1.2008, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 644
Регистрация: 22.9.2005

Репутация: 28
Всего: 66



Цитата(dsCode @  20.1.2008,  19:05 Найти цитируемый пост)
создается ли объект для примитива (и затем уничтожается после проведения нужной операции) или же происходит преобразование типа примитива к объекту?

Не важно, как точно/детально это реализовано в движке, важно, что это внешне (с точки зрения программиста) не выходит за рамки логики ECMAScript. C точки зрения этой логики и надо рассказывать, потому как она условно общая, а в движках всегда всё по своему:

JScript (цитируя Eric Lippert):

Цитата

In theory, the interpreter should take the literal, create a new in-memory object wrapper around the value, and then call the appropriate prototype method on the wrapper, and then destroy the wrapper. In practice, the engine is a little smarter than that -- we detect this situation at runtime and dispatch to the appropriate method without actually doing the work of creating an in-memory item.


JavaScript (цитируя Brendan Eich):

Цитата

JS string (note lowercase) is a primitive type; String is its first-class object wrapper.  In JS, "hello".length is 5, "hello" is a primitive string, and its Object wrapper is created (or some reusable proxy reused) when the . operator is evaluated with operands "hello" and length.

PM MAIL WWW   Вверх
dsCode
Дата 21.1.2008, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 565
Регистрация: 8.9.2007
Где: Saint-Petersburg

Репутация: 19
Всего: 26



AKSZeroglif, ага, thx =)


--------------------
the .code inside
:my music
PM MAIL WWW ICQ Jabber   Вверх
AKS
Дата 21.1.2008, 06:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



 smile 
О-о-о (вздох облегчения)! Zeroglif жив-здоров! 
PM MAIL   Вверх
egao
Дата 21.1.2008, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 6.8.2007

Репутация: -1
Всего: нет



Zeroglif, где пропадал?  smile 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1146 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.