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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> О свойствах и методах в объектах и прототипах 
V
    Опции темы
Burrr
Дата 29.4.2008, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 10
Всего: 20



Приветствую!

Речь пойдет о статье ООП в Java Script (2): Классы, размещенной на karaboz.ru.

Процитирую комментарий, оставленный пользователем Zeroglif:
Цитата
> При вызове свойства объекта, оно ищется сначала в самом объекте, и если его там не оказывается, то интепретатор смотрит в .prototype функции-конструктора, создавшей объект.

К моменту обращения к свойству объекта, функция-конструктор может уже не существовать, а свойство prototype может содержать совершенно другое значение (не прототип объекта), поэтому интерпретатор к свойству prototype конструктора вообще не обращается, поиск осуществляется по другой неявной цепочке. Это важно. 


Вопрос: "О какой цепочке речь?". Может кто-нибудь четко объяснить механизм поиска при обращении к свойству объекта?

Добавлено @ 22:04
Для пояснения приведу пример:

Код
// Конструткор класса
var Class = function() {
    this.thereisnospoon = 'O_O';
}

// Добавим метод в прототип
Class.prototype.method = function() {
    alert(this.thereisnospoon);
}

// Создаем экземпляр объекта
var o = new Class();
// Вызов метода
o.method(); // Выведет "О_О"

// Чистим прототип
Class.prototype = {};

// Вызов метода
o.method(); // Выведет "О_О"


Как возможно, что второй вызов метода срабатывает?
Точнее где теперь хранится метод, если в контексте объекта он не создавался, а прототип пуст?

Это сообщение отредактировал(а) Burrr - 29.4.2008, 22:06


--------------------
PM MAIL ICQ   Вверх
ksnk
Дата 29.4.2008, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Объект несколько сложнее, чем можно выразить средствами JavaScript  smile 
Своими словами - прототип объекта при создании нового элемента копируется в скрытое поле самого объекта. Это поле, imho, доступно нам только в ощущениях, напрямую заюзать его нельзя... 
Свойство prototype объекта (не функции) никакого дополнительного смысла не несет, да и вообще никакого смысла не несет кроме заданного пользователем smile ... Свойство propotype функции имеет смысл только на момент срабатывания оператора new


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Burrr
Дата 29.4.2008, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 10
Всего: 20



ksnk
1) У объектов нет прототипа, прототипы есть только у конструкторов.
2) Если бы при создании каждого экземпляра объекта прототип конструктора записывался бы в скрытое поле объекта, то это немеряно жрало бы память, чего не наблюдается, да и смысла не было бы в такой реализации прототипирования.

Добавлено @ 23:21
ksnk, правильней будет сказать "Экземпляры объекта наследуют свойства и методы от прототипа конструктора, но не имеют собственного прототипа".

Это сообщение отредактировал(а) Burrr - 29.4.2008, 23:23


--------------------
PM MAIL ICQ   Вверх
ksnk
Дата 29.4.2008, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Цитата(Burrr @  29.4.2008,  23:17 Найти цитируемый пост)
1) У объектов нет прототипа, прототипы есть только у конструкторов.

Что такое конструктор? по моему это - функция, к которой применяется оператор new... imho, я про это и говорил ;-)
Цитата(Burrr @  29.4.2008,  23:17 Найти цитируемый пост)
2) Если бы при создании каждого экземпляра объекта прототип конструктора записывался бы в скрытое поле объекта, то это немеряно жрало бы память, чего не наблюдается, да и смысла не было бы в такой реализации прототипирования.

Вообще-то я подразумевал ссылку на "объект". Скопировать один указатель на объект это тоже расточительство? Весь prototype-based механизм наследования на этом и строится... 
Можно сочинить тест, "унаследовав" объект A от обьекта B, а затем добавив свойство в объект В. Чудесным образом это-же свойство появляется и у А...

Добавлено через 2 минуты и 3 секунды
Цитата(Burrr @  29.4.2008,  23:17 Найти цитируемый пост)
но не имеют собственного прототипа

В свете предложенного эксперимента такая фраза вызывает недоумение и желание уточнить, что-же такое прототип smile

Добавлено через 7 минут и 17 секунд
Код

var b={x:1111}; 

function obj(){} ; 
obj.prototype = b ;

var a =new obj(); 
alert([a.x,a.y]);

b.y=2222;
alert([a.x,a.y]);



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Burrr
Дата 30.4.2008, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 10
Всего: 20



ksnk, нужно определиться с терминологией, иначе комментарии будут вводить в заблуждение. В JavaScript всё является объектами, но для ясности некоторые объекты следует называть иначе.

И так:
Цитата(ksnk)
Своими словами - прототип объекта при создании нового элемента копируется в скрытое поле самого объекта

правильно звучит так: "Прототип конструктора при создании экземпляра объекта копируется в скрытое поле этого конструктора".
В таком свете всё становится ясно и нареканий не вызывает smile
Только откуда взято такое утверждение? Есть чем подтвердить или это догадка?

Цитата(ksnk)
Вообще-то я подразумевал ссылку на "объект". Скопировать один указатель на объект это тоже расточительство?

Нет это не расточительство. Но где хранится эта предполагаемая ссылка? В экземпляре объекта или в конструкторе?

Цитата(ksnk)
В свете предложенного эксперимента такая фраза вызывает недоумение и желание уточнить, что-же такое прототип

Прототип - это свойство конструктора, хранящее ссылку на объект, содержащий хеш со свойствами и методами, например, со свойством constructor, указывающего обратно на функцию конструктор.

Цитата(ksnk)
Можно сочинить тест, "унаследовав" объект A от обьекта B, а затем добавив свойство в объект В. Чудесным образом это-же свойство появляется и у А...

Вы не очень понимаете что такое наследование и ваш пример - это создание 2-х экземпляров объекта одного класса, которые достают свое свойство из прототипа конструктора, в котором в своб очередь стоит ссылка на глобальный oбъект b = {} и не более того.

Добавлено @ 00:09
Сразу поясню насчет наследования:

Наследование - это понятие из ООП, подразумевающее возможность порождать один класс от другого с сохранением свойств-методов класса родителя, возможностью их переопределения и добавленич новых свойств-методов.

За неимением классов, реализация наследования через прототип в JavaScript от одного конструктора другому - не такая уж простая задача.

Это сообщение отредактировал(а) Burrr - 30.4.2008, 00:17


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


Опытный
**


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

Репутация: 10
Всего: 20



Ага, а вот и ответ на мой первоначальный вопрос:
http://www.javascript.ru/tutorial/object/i...type-i-prototip


--------------------
PM MAIL ICQ   Вверх
ksnk
Дата 30.4.2008, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Цитата(Burrr @  30.4.2008,  00:03 Найти цитируемый пост)
Прототип конструктора при создании экземпляра объекта копируется в скрытое поле этого конструктора

Хмм...
Для моего примера - obj - конструктор, b - прототип, a - объект. 
Согласно отквоченному утверждению, после строки a= new obj(); в obj будет содержаться скрытая ссылка на b.
Что будет если заменить obj.prototype и сделать генерацию нового объекта?

Или конструктор - более сложная субстанция?

imho, каждый объект содержит по крайней мере два скрытых списка - список конструкторов, с которым работает инструкция instanceof  и список прототипов (поле __proto__ для FF ), по которому производится поиск свойств этого объекта. Формируются эти списки в момент выполнения new. Ну и конечно, для хранения всего этого списка в каждый новый объект достаточно добавить пару ссылок...



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
AKS
Дата 30.4.2008, 07:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Burrr @  30.4.2008,  00:29 Найти цитируемый пост)
Ага, а вот и ответ на мой первоначальный вопрос:...

Я, конечно, понимаю, что найти что-то стоящее не так-то просто. Слово javascript  в строке поиска вернет что-нибудь, типа "Центральный Javascript-ресурс" (кто его сделал центральным?), а слово prototype так вообще вернет результат не для слабонервных. Тем не менее, можно, проявив смекалку, набрать какую-нибудь хитрую комбинацию слов, одним из которых задать известное имя. Тогда может попасться ссылка на форум dklab, а там уже прямая дорога к шпаргалке всех времен и народов — http://forum.dklab.ru/viewtopic.php?p=102575#102575.
Читать же то, что написано на "центральных ресурсах", где авторы по наитию описывают все своими словами, пытаясь наобум попасть пальцем в небо, довольно утомительное занятие. Ведь надо еще догадаться, что имеется ввиду, когда используется ненормативная лексика (в рамках ECMAScript Language Specification) или собственные фантазии вместо фактов. Например:
Цитата(www.javascript.ru)

Ссылка на прототип создается оператором new во время создания объекта. 

Ее значением становится свойство prototype функции-конструктора. Значение prototype указывает, от кого будут наследовать новые объекты.

Указывает, от кого наследовать, значит? Что и от кого будет наследовано вот здесь:
Код

function F() {};

F.prototype = 'prototype';

var f = new F;

?
Или как уразуметь вот это:
Цитата(www.javascript.ru)

Когда Вы ставите это свойство - Вы как бы говорите "все новые объекты будут иметь прототип XXX".

"Ставите", "говорите"? Бо-о-о-же мой!
А вот еще:
Цитата(www.javascript.ru)

Наверху цепочки всегда находится объект встроенного класса Object.

Далее картинка, изображающая:
Цитата(www.javascript.ru)

animal.[[Prototype]] => встроенный объект JS

И в заключении:
Цитата(www.javascript.ru)

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

Вот как догадаться после таких объяснений, кто и где там "стоит" или "находится"?

Добавлено @ 07:38
Цитата(ksnk @  30.4.2008,  01:20 Найти цитируемый пост)
объект содержит по крайней мере два скрытых списка - список конструкторов, с которым работает инструкция instanceof...

Зачем объекту содержать список конструкторов, если instanceof конструкторами "не интересуется" (они могут быть полезны лишь в качестве операнда)?


Это сообщение отредактировал(а) AKS - 30.4.2008, 07:39
PM MAIL   Вверх
ksnk
Дата 30.4.2008, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Цитата(AKS @  30.4.2008,  07:30 Найти цитируемый пост)
если instanceof конструкторами "не интересуется"

? Каким, интересно образом вот такая конструкция может сработать a=new Array(); alert(a instanceof Array);, есль объект a не будет содержать ссылку на функцию Array?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
AKS
Дата 30.4.2008, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(ksnk @  30.4.2008,  08:22 Найти цитируемый пост)
Каким, интересно образом вот такая конструкция может сработать a=new Array(); alert(a instanceof Array);, есль объект a не будет содержать ссылку на функцию Array?

Этот instanceof мог бы выглядеть примерно так (абстрактно):
Код

alert(a.[[Prototype]] === Array.prototype);

, или в FF вот так:
Код

alert(a.__proto__ === Array.prototype);

Так что объекту a не надобности в "ссылках" на функцию Array. Именно этот принцип позволяет вот такому выражению быть истиной:
Код

alert(Object instanceof Function === Function instanceof Object);

PM MAIL   Вверх
ksnk
Дата 30.4.2008, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Цитата(AKS @  30.4.2008,  09:42 Найти цитируемый пост)
alert(a.__proto__ === Array.prototype);

Таки да... Видимо, так оно и сделано... Правда выглядит это как-то стремно...
Код

var b={xxx:1111} ; // объект предок
var c={yyy:2222} ; // второй объект предок

function obj(){} // конструктор 
obj.prototype=b;

function obj1(){} // конструктор 
obj1.prototype=b;

var a=new obj();
alert([a instanceof obj,a instanceof obj1,a.yyy]); // true, true,

obj.prototype=c;
alert([a instanceof obj,a instanceof obj1,a.yyy]); // false, true,

b.yyy=3333;
alert([a instanceof obj,a instanceof obj1,a.yyy]); // false, true, 3333
 


Это сообщение отредактировал(а) ksnk - 30.4.2008, 10:05


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
AKS
Дата 30.4.2008, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(ksnk @  30.4.2008,  10:04 Найти цитируемый пост)
Правда выглядит это как-то стремно...

А какие именно результаты смущают? Или "стремен" сам оператор instanceof? Если оператор, то о нем уже давно все сказано...
PM MAIL   Вверх
ksnk
Дата 30.4.2008, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Я интуитивно расчитываю, что конструкция a instanceof obj  будет выдавать true всегда, а конструкция a instanceof obj1 будет выдавать всегда false... smile При "моей" схеме реализации "наследования" было бы интуитивно правильнее  smile 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Zeroglif
Дата 30.4.2008, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Все беды, братцы, от переизбытка в javascript самого слова "prototype":

- object's prototype;
prototype-based inheritance;
- each constructor has a prototype property
- every constructor has an associated prototype;
- constructor has an implicit reference to the prototype;
- implicit prototype chain;
prototype is an object;
- ...

Если сюда ещё добавить и общий смысл - prototype (образец, прототип) и вспомнить заодно про одноимённую библиотеку, с помошью которой про прототип гуглить уже бесполезно, то картинка удручает...  smile 



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


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


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

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



Цитата(Zeroglif @  30.4.2008,  11:45 Найти цитируемый пост)
Все беды, братцы, от переизбытка в javascript самого слова "prototype"

С этим, вроде бы, жить можно (потихоньку, не высовываясь smile ). Но вот "гениально" названная библиотека здорово людям засоряет мозги, так же, как и "эфирное" пространство. 

Цитата(ksnk @  30.4.2008,  10:40 Найти цитируемый пост)
При "моей" схеме реализации "наследования" было бы интуитивно правильнее

Интуиция может и подвести (тогда, когда конструкторы ассоциируются с классами).

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


Опытный
**


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

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



Цитата(AKS @  30.4.2008,  11:56 Найти цитируемый пост)
Интуиция может и подвести (тогда, когда конструкторы ассоциируются с классами).

К сожалению, терминология языка очень помогает этой интуиции: 'new', 'instanceof', 'instances' - это как-то не очень подчёркивает прототипную суть.
PM MAIL WWW   Вверх
AKS
Дата 30.4.2008, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Zeroglif @  30.4.2008,  12:12 Найти цитируемый пост)
это как-то не очень подчёркивает прототипную суть.

Ну а что делать - что есть, то есть. 
"Папа" о своем "детище" (с явной неприязнью):
Цитата( Brendan Eich (about JavaScript))

Yet many curse it, including me. I still think of it as a quickie love-child of C and Self. Dr. Johnson's words come to mind: "the part that is good is not original, and the part that is original is not good."

Все к тому, что "слепили" наспех. Однако это не помешало тому, чтобы The World's Most Misunderstood Programming Language Has Become the World's Most Popular Programming Language. Отчасти потому, что:
Цитата(Douglas Crockford)

...JavaScript isn't too bad...

, однако, немаловажно:
Цитата(Douglas Crockford)

It is better to be lucky than smart.


PM MAIL   Вверх
ksnk
Дата 30.4.2008, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Цитата(AKS @  30.4.2008,  11:56 Найти цитируемый пост)
Интуиция может и подвести

smile я как-то "интуитивно" упустил случай нескольких конструкторов у одного объекта...



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
AKS
Дата 30.4.2008, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(ksnk @  30.4.2008,  13:02 Найти цитируемый пост)
 я как-то "интуитивно" упустил случай нескольких конструкторов у одного объекта...

Во-во, о том и я. Если считать, что функции-конструкторы — это классы в js, то так и будет "думаться интуитивно", что у объекта может быть несколько конструкторов. 
На самом же деле конструктор один. Ведь конструктор — он и в Африке конструктор. Сконструировал, и пошел (как говаривает Zeroglif) лесом. 
А instnceof обязан исследовать "генеалогию" объектов. Как это сделать, если нет классов? Обращаться к конструктору? С какой стати, если наследственные связи реализованы через прототипы (своего "папу" объект не "помнит" — (new function () {}).[[Class]] => 'Object'). Значит через них, через прототипы. Причем что-то запоминать (кто был в prototype у функции-конструктора когда-то) — это не в природе js. Отсюда и резульаты — всякий раз могут быть разные, ведь вычисляется то, что есть в данный момент...


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


Опытный
**


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

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



Цитата(AKS @  30.4.2008,  12:44 Найти цитируемый пост)
с явной неприязнью

Brendan уже живёт в эру ES4, ради этого светлого будущего он готов перечислять недостатки ES3 часами, с картинками и графиками.  smile 

Цитата(AKS @  30.4.2008,  07:30 Найти цитируемый пост)
"Центральный Javascript-ресурс"

Центральный? Тогда блок рекламы. Всем без исключения нужно пройти тест "Основной Javascript" и... внимание... посчитать, сколько там неправильных правильных ответов.

Цитата(AKS @  30.4.2008,  14:10 Найти цитируемый пост)
На самом же деле конструктор один.

Если объект может быть и instanceof Одного, и instanceof Другого, а конструктор при этом всего один, то под каким термином тогда спрятаться? 
PM MAIL WWW   Вверх
AKS
Дата 30.4.2008, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Zeroglif @  30.4.2008,  14:58 Найти цитируемый пост)
Brendan уже живёт в эру ES4...

Ха, наверно так и есть!
Цитата(Zeroglif @  30.4.2008,  14:58 Найти цитируемый пост)
Центральный?

Если что, то это не я так его "обозвал" - там титл такой: "Центральный Javascript-ресурс. Учебник с примерами скриптов. Форум. Книги и многое другое" ("многое другое" надо было в первую очередь пустить smile ).
Цитата(Zeroglif @  30.4.2008,  14:58 Найти цитируемый пост)
...под каким термином тогда спрятаться? 

Оператор как должен называться? Или что?
Если instanceof, то он ведь должен сообщить, наследует ли объект от какой-либо структуры или нет (в js к реализации подошли "творчески" - ни тем, ни другим) . Ну а по поводу конструкторов - сколько их вообще у объекта бывает-то в языках программирования?
PM MAIL   Вверх
Zeroglif
Дата 30.4.2008, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(AKS @  30.4.2008,  15:22 Найти цитируемый пост)
Оператор как должен называться? Или что?

Не, ksnk, глядя на instanceof, интуитивно хочет сказать "несколько конструкторов у объекта", но AKS ему правильно в общем-то намекает, что "не несколько, а один" конструктор. Отсюда вопрос, как коротко терминологически описать ситуацию, чтоб без классовой терминологии, но понятно. Если не конструкторов несколько, то чего тогда? Функций (без акцента на слово конструктор)? "Классов"(в кавычках!)? Подтипов?
PM MAIL WWW   Вверх
ksnk
Дата 30.4.2008, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Цитата(Zeroglif @  30.4.2008,  15:41 Найти цитируемый пост)
но AKS ему правильно в общем-то намекает, что "не несколько, а один" конструктор

Не догоняю я чего-то такие намеки? В том примере, который я приводил последний раз, у объекта а два конструктора obj и obj1! При срабатывании обоих конструкторов появится объект, являющийся наследником от b. Тому в ООП'е есть тьма аналогий smile

итого - что-же такое конструктор, который только один? Я-то уже как-то привык называть конструктором ту функцию, которую надо подпихнуть справа к оператору new ;-)


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
AKS
Дата 30.4.2008, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Zeroglif @  30.4.2008,  15:41 Найти цитируемый пост)
 Если не конструкторов несколько, то чего тогда?

Из предложенных вариантов можно было бы выбрать "классов" в больших, больших таких кавычках. 
Что тут можно подразумевать под "классами" в кавычках? А как-раз их аналоги - структуры, которые обеспечивают наследование. Это - прототипы. Сколько прототипов у объекта в цепи, например:
Код

function F() {};
(new F).[[Prototype]].[[Prototype]]; // здесь сначала => {}, потом => Object.prototype

столько и будет допустимо операндов справа для instanceof, чтоб была истина. Сначала сравнивить, например:
Код

var f = new F;
f.[[Prototype]] === F.prototype; // f instanceof F

потом сравнить:
Код

f.[[Prototype]].[[Prototype]] === Object.prototype; // f instanceof Object
// или т.к. f.[[Prototype]] === F.prototype;
F.prototype.[[Prototype]] === Object.prototype;

Вот и выходит, что вроде два конструктора, а на самом деле сравниваются-то прототипы. Такой вот он, instanceof (с "изюминкой").
Или не так?

Добавлено @ 16:08
Цитата(ksnk @  30.4.2008,  15:53 Найти цитируемый пост)
 При срабатывании обоих конструкторов появится объект, являющийся наследником от b.

Так ведь при "срабатывании обоих конструкторов" появятся два объекта, и у каждого будет свой конструктор (смотря который сработал)! Только не то, чтобы "будет конструктор". Конструктор отработал - и все (дело сделано - концы в воду smile ).


Это сообщение отредактировал(а) AKS - 30.4.2008, 16:10
PM MAIL   Вверх
ksnk
Дата 30.4.2008, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Цитата(AKS @  30.4.2008,  16:06 Найти цитируемый пост)
выбрать "классов" в больших, больших таких кавычках.

Угу... Проблема, видимо, в том, что ООП парадигма натягиваясь на JavaScript трещит и рвется во многих местах ;-). Некорректно рассуждать о языке используя отсутствующие в нем понятия ...

Цитата(AKS @  30.4.2008,  16:06 Найти цитируемый пост)
и у каждого будет свой конструктор
 Ага! дошло... smile



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
AKS
Дата 30.4.2008, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(ksnk @  30.4.2008,  16:16 Найти цитируемый пост)
Некорректно рассуждать о языке используя отсутствующие в нем понятия

А я никогда не хотел использовать термин "класс".

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


Опытный
**


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

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



ZeroglifAKS, сколько вас обоих ни читаю, всегда что-то новое и интересное узнаю. Спасибо!

Это сообщение отредактировал(а) dsCode - 30.4.2008, 16:31


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


Опытный
**


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

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



Цитата(ksnk @  30.4.2008,  15:53 Найти цитируемый пост)
итого - что-же такое конструктор, который только один? Я-то уже как-то привык называть конструктором ту функцию, которую надо подпихнуть справа к оператору new

Так и есть, справа подпихиваем один конструктор. ;)

Цитата(AKS @  30.4.2008,  16:06 Найти цитируемый пост)
Или не так?

Всё так, только вот приходится ситуацию описывать или кодом, или цитатами из ES, не хватает лаконичности, может всё-таки вместо "классов" использовать "тип объекта" или "подтип объекта", или "объектный тип бла-бла-бла". Тогда, к примеру, конструкция (a instanceof Array) в этом контексте проверяет, "может ли объект а наследовать от объекта типа Array". То есть, если типизация значений в javascript определяет один единственный тип - type Object, то типизация самих объектов базируется на связке конструктор плюc его свойство .prototype, значением которого является соответствущий мегаважный объект... Возьмём дурацкий пример:

Код

function Foo() {};
Foo.prototype = [];
var obj = new Foo();

alert(obj instanceof Foo);      //-> true
alert(obj instanceof Array);  //-> true
alert(obj instanceof Object); //-> true

Технически obj может наследовать от объектов - от Foo.prototype, от Array.prototype, от Object.prototype, а словами сразу просится сказать проще: "obj наследует от прототипа Foo", и именно так говорят очень часто, что конечно же неправильно. Термин "классы" хорош краткостью, но не про нас, а вот "тип объекта" - самое то, главное - понять на чём базируется эта типизация в среде объектов и не путать с типами значений...
PM MAIL WWW   Вверх
AKS
Дата 30.4.2008, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Zeroglif @  30.4.2008,  19:58 Найти цитируемый пост)
... может всё-таки вместо "классов" использовать "тип объекта" или "подтип объекта", или "объектный тип бла-бла-бла".

Мне тоже так кажется, что "классы" - это "мимо нот". Ведь нет их в ES3. К тому же теперь, когда есть возможность "пощупать" JavaScript'овские классы благодаря предварительной реализации ECMAScript Edition 4, это становится совершенно очевидно.

Цитата(Zeroglif @  30.4.2008,  19:58 Найти цитируемый пост)
Тогда, к примеру, конструкция (a instanceof Array) в этом контексте проверяет, "может ли объект а наследовать от объекта типа Array".

Цитата(Zeroglif @  30.4.2008,  19:58 Найти цитируемый пост)
... "тип объекта" - самое то, главное - понять на чём базируется эта типизация в среде объектов и не путать с типами значений...

Да точно - как всегда у Вас получается предельно четко и ясно. 
Единственно, над чем задумался - как быть с пользовательскими функциями-конструкторами? Вот что я имею ввиду. С тем же самым Array все просто. А вот с функцией Foo может произойти такое (точнее с ее prototype):
Код

function Foo() {};
Foo.prototype = null;
var obj = new Foo();

Можно ли сказать, что "obj может наследовать от объекта типа Foo"? Тут ведь даже нельзя применить оператор instanceof
Кстати, Opera, в отличие от многих других, в случае c obj instanceof Foo сообщает какую-то ерунду - у Foo вдруг "пропадает" св-во [[HasInstance]]! 
Хотя это все какие-то странности, о которых и думать-то, наверно, не стоит (короче - утро вечера мудренее)...

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


Опытный
**


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

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



Цитата(AKS @  30.4.2008,  21:08 Найти цитируемый пост)
Можно ли сказать, что "obj может наследовать от объекта типа Foo"?

Нельзя, в данном случае obj может наследовать от объекта типа Object (технически прямиком от Object.prototype). Таков код.

Цитата(AKS @  30.4.2008,  21:08 Найти цитируемый пост)
Тут ведь даже нельзя применить оператор instanceof

Применить можно, но с выбросом ошибки. Функция Foo создала объект, но при этом Foo.prototype не находится в цепи прототипов созданного объекта, и, соответственно, этот объект не может наследовать от объекта типа Foo.
PM MAIL WWW   Вверх
AKS
Дата 2.5.2008, 07:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Zeroglif, ну, вроде, в общем и целом пока ясно. Подумал только еще вот о чем. Зачем им понадобилось описывать в документации типы объектов при помощи [[Class]]? Наверняка, для понимания было бы лучше использовать какой-нибудь [[Type]]...
Ну да им виднее!
А еще вот вопросец есть - может быть Вам попадалось где-нибудь разъяснение/пояснение (предистория/мотивация) того, что:
Цитата

15.10.6 Properties of the RegExp Prototype Object
The value of the internal [[Prototype]] property of the RegExp prototype object is the Object prototype. The value of
the internal [[Class]] property of the RegExp prototype object is "Object".

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


Опытный
**


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

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



Цитата(AKS @  2.5.2008,  07:42 Найти цитируемый пост)
the internal [[Class]] property of the RegExp prototype object is "Object"

Это баг ES, но движки эту э... неточность дружно проигнорировали.
PM MAIL WWW   Вверх
dsCode
Дата 2.5.2008, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В смысле? Опечатака что ли обычная? Т.е. там должно было быть RegExp?


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


Опытный
**


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

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



Цитата(dsCode @  2.5.2008,  12:54 Найти цитируемый пост)
В смысле? Опечатка что ли обычная?

То ли пропустили, то ли вставили, как-то обосновав, но потом обоснование благополучно отмерло по причине правильной (по аналогии с остальными прототипами) реализации в большинстве движков. 

Цитата(dsCode @  2.5.2008,  12:54 Найти цитируемый пост)
Т.е. там должно было быть RegExp?

Угу:
Код

alert(Object.prototype.toString.apply(RegExp.prototype)); //-> [object RegExp], а не [object Object]

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


Опытный
**


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

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



Цитата(Zeroglif @  2.5.2008,  13:17 Найти цитируемый пост)
    
alert(Object.prototype.toString.apply(RegExp.prototype)); //-> [object RegExp], а не [object Object]


ну собственно, да, toString прототипа Object'a единственный, кто возвращает [[Class]] (не догадался сам проверить =))

Цитата(Zeroglif @  2.5.2008,  13:17 Найти цитируемый пост)
по аналогии с остальными прототипами


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

Спасибо =)


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


Опытный
**


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

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



Цитата(dsCode @  2.5.2008,  15:11 Найти цитируемый пост)
вряд ли это где-то обосновывалось и это просто опечатка

Это скорее заумный баг, как вариант могу предложить обсуждение на багзилле, где Waldemar Horwat считает, что это преднамеренная история, мол, у прототипа не хватает квалифицирующих признаков. Сомнительное обоснование, учитывая то, что никто не определял, как именно (по каким различиям) объекты разбросаны по [Class]-ам, известен только общий смысл - "The value of a [[Class]] property is used internally to distinguish different kinds of built-in objects" и те некоторые детали, что можно почерпнуть из описания каждого объекта.

Что касается сносок на ошибки, то есть errata, а всё остальное закостенело навечно. Вернее уже до ES4. А может это и есть "навечно"... smile 
PM MAIL WWW   Вверх
dsCode
Дата 2.5.2008, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Хм... Плохо, что я еще имен практически не знаю. Кто такой Waldemar Horwat? Разработчик ES? Вернее, на каком основании он утверждающе заявлял, что это продуманная фича ES и о нехватке "properties or behaviors", чтобы [[Class]]'у прототипа RegExp'a быть RegExp'ом? К тому же, в конце беседы выяснилось, что ES согласны с имплементациями. А это значит, что это и вовсе не важно (особого веса для беседы не имело (собственно, как не столь важно и сегодня - через 4 года ;))), и не было никакой продуманной фичи, иначе бы ее, действительно, объяснили (а то одной вуалирующей фразы "для внутренних различий встроенных объектов" может быть и недостаточно)).

За errat'у - спасибо (некоторые из опечаток, описанных в ней, я тоже находил). А errata - это что? Именно мозиловская версия сборника опечаток ES? Или ES все это подтвердлили и это так же официальный документ? (под "официально подтвердили" я имею в виду случай, схожий с утверждениями Waldemar Horwat, в смысле, может Waldemar Horwat все эти опечатки errat'ы сейчас подробно распишет как очень даже продуманные фичи ES smile)

Цитата(Zeroglif @  2.5.2008,  16:14 Найти цитируемый пост)
Вернее уже до ES4. А может это и есть "навечно"...


"навечно"? smile не знаю =) когда анонсируется выход (в смысле не тестового repl'a (этот-то я уже скачал и поигрался немного), а официальный)? В этом году уже? Хотя, конечно, понадобиться куча времени, чтобы ES4 полностью вжился. Если сейчас при разработках поддерживают браузеры, сшитые при царе Горохе, то и при официальном выходе ES4 еще несколько лет будут писать полностью совместимый с ES3  код. Так что также долго будут продолжать эмулировать классы (кому нравится), filter'ы, map'ы, each'и для массивов, trim'ы для String'ов и т.д. (это и можно назвать "навечно" smile). Кстати, может радикальной мерой (прогресса) была бы несовместимость (а вот все разом щас как начнут писать под ES4 и тогда ES3 быстро "забудется", хотя, конечно жалко) =)


Это сообщение отредактировал(а) dsCode - 2.5.2008, 17:25


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


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


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

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



Цитата(Zeroglif @  2.5.2008,  16:14 Найти цитируемый пост)
Это скорее заумный баг, как вариант могу предложить обсуждение на багзилле...

Ага, значит "папаша" все же грозился, что очень хочет добавить исправление по этому поводу. Только потом забы(и?)л, видимо сильно увлекшись новым JavaScript'ом (вторым, или каким он у них получится). А тут, когда открылась перспектива понаделать новых багов, опечаток и т.д., то старые — это уже не та игрушка, да ну ее.
Цитата(Zeroglif @  2.5.2008,  16:14 Найти цитируемый пост)
... всё остальное закостенело навечно. Вернее уже до ES4. А может это и есть "навечно"...  

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


Опытный
**


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

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



Цитата(dsCode @  2.5.2008,  17:14 Найти цитируемый пост)
Кто такой Waldemar Horwat? Разработчик ES?

Waldemar готовил ранние драфты JS2.0/ES4 в AOL/Netscape, соответственно ES3 ему ооочень был близок, хотя непосредственно в написании ES3 он и не участвовалучаствовал, исправляюсь. Нынче он тоже принимает участие во всей этой кухне, только, если я не ошибаюсь уже в качестве дева Google. Во всяком случае, я видел его имя, когда читал их транскрипты...

Цитата(dsCode @  2.5.2008,  17:14 Найти цитируемый пост)
и не было никакой продуманной фичи, иначе бы ее, действительно, объяснили

Могла быть. Время точит память. Например, многие сетуют, что arguments object сдуру не сделали массивом. А почему не сделали - никто в деталях уже не помнит (где-то встречал, что NS обвинил в этом MS, дескать, это они во всём виноваты, ну, а кто же...). Причин не помнят, но точно над этим думали.

Цитата(dsCode @  2.5.2008,  17:14 Найти цитируемый пост)
А errata - это что? Именно мозиловская версия сборника опечаток ES? Или ES все это подтвердлили и это так же официальный документ?

Мозилловская версия.

Цитата(dsCode @  2.5.2008,  17:14 Найти цитируемый пост)
В этом году уже?

Запросто. Надеюсь, что у них что-нибудь не сложится (как и в первый активный период).  smile 


Это сообщение отредактировал(а) Zeroglif - 2.5.2008, 18:40
PM MAIL WWW   Вверх
AKS
Дата 2.5.2008, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Zeroglif @  2.5.2008,  18:00 Найти цитируемый пост)
... хотя непосредственно в написании ES3 он и не участвовал.

В моей Edition 3 Final вроде бы он "засветился" (незнаю, что уж он там делал - писал или мимо проходил smile )...

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


Опытный
**


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

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



Цитата(AKS @  2.5.2008,  18:20 Найти цитируемый пост)
Edition 3 Final 

Хе-хе, действительно, поискал его в старых доках и исправляюсь - он участвовал во встречах TC-39 уже в 1998 году. Прости, Вова.
PM MAIL WWW   Вверх
Zeroglif
Дата 2.5.2008, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(dsCode @  2.5.2008,  17:14 Найти цитируемый пост)
Вернее, на каком основании он утверждающе заявлял, что это продуманная фича ES и о нехватке "properties or behaviors", чтобы [[Class]]'у прототипа RegExp'a быть RegExp'ом?


Всё, выкопал.  smile Теперь я готов ответить, на каком основании он утверждающе заявлял. На основании собственного же предложения, внесённого 15/11/1999 на встрече TC-39, цитирую:

Цитата

<...>Waldemar proposes adding <...> In 15.10.6 (Properties of the RegExp Prototype Object) he proposes we add the sentence: The value of the internal [[Class]] property of the RegExp prototype object is "Object". He also asks about the constructor property of the Math object. We agree to change it to "Math". Thanks to Herman for raising this one.

We agree to the proposed changes.


В общем, он предложил поправить/уточнить уже готовый final draft - они согласились.


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


Опытный
**


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

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



Zeroglif, невероятно! =) Как вы все умудряетесь откопать? В очередной раз - спасибо за информацию.

А что там насчет Math? - не совсем понятно. Какой еще "constructor property of the Math object", которые еще и равен "Math"? Ведь Math - не конструктор и не callable (не имеет ни [[Construct]], ни [[Call]]). Может это [[Class]] Math'a имелся в виду (ну просто кто еще там равен "Math")?


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


Опытный
**


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

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



Цитата(dsCode @  3.5.2008,  14:45 Найти цитируемый пост)
Какой еще "constructor property of the Math object", которые еще и равен "Math"?

Вот именно, какой такой "constructor property of the Math object", которые еще и равен "Math"? Совсем они там оборзели, понаписали всякую ересь... smile

з.ы.  don't know
PM MAIL WWW   Вверх
dsCode
Дата 4.5.2008, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А и действительно, это какой-то обрывок фразы, - не известно, что там имелось в виду.


--------------------
the .code inside
:my music
PM MAIL WWW ICQ Jabber   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




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


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

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