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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Свойство prototype, Немогу понять 
:(
    Опции темы
Aliance
  Дата 26.4.2005, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Читал много литераторы. Смотрел сорцы кодов (Sardar часто использует это свойство).
Ничего не помогает, решил обратиться к опытным в этом деле: помогите разобраться и научится использовать св-во prototype. Для меня это дремучий лес smile

Из изученного мною знаю, что:
  • у тегов этотго свойства нет =/
  • его св-ва наследуют все объекты; все св-ва объекта-прототипа становятся св-вами любых объектов, для которых он явл. прототипом.
  • все объекты и функции имеют свой протитип

Но мне не хватает практического применения этой фичи, кто поможет? :-D
PM MAIL WWW ICQ Skype   Вверх
diam
Дата 26.4.2005, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 6
Всего: 16



А в чём проблема?

Цитата(Aliance @ 26.4.2005, 17:24)
его св-ва наследуют все объекты; все св-ва объекта-прототипа становятся св-вами любых объектов, для которых он явл. прототипом.


Ты, по сути, сам почти ответил на свой вопрос.
Код

// Конструктор объектов Browser
function Browser () {
        this.name = "Мой браузер";
}
//
var myBrowser = new Browser();

// Сейчас мы промолчим)
if ( myBrowser.version ) alert('Ап');

Browser.prototype.version = "Версия";
//А вот сейчас запоём алертом "Версия";
if ( myBrowser.version ) alert ( myBrowser.version );


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


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



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

Цитата(diam @ 26.4.2005, 19:42)
if ( myBrowser.version ) alert('Ап');

Browser.prototype.version = "Версия";
//А вот сейчас запоём алертом "Версия";
if ( myBrowser.version ) alert ( myBrowser.version );

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


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Если убрать задание прототипа - алерта нет и браузер грузиться.
Если наоборот - все окей.
Если оба - то ок и грузится.

Хм... в принципе уже становится яснее. Но ведь version нигде не звучало - как мы можем его проалертить, логично smile
Но встает вопрос - когда нам это пригодится?
И, что важнее, как прототип работает с функциями, а не объектами?
PM MAIL WWW ICQ Skype   Вверх
Gregof
Дата 27.4.2005, 06:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Aliance @ 26.4.2005, 19:12)
И, что важнее, как прототип работает с функциями, а не объектами?
Функции это тоже объекты.
Хорошая статья про прототипы здесь: 39 Набла Лебедева
Цитата(Aliance @ 26.4.2005, 19:12)
Но встает вопрос - когда нам это пригодится?
Посмотри эту сататью : Web-приложения. Я конечно на так оптимистично оцениваю будущее web-приложений. Но как раз этим сейчас и занимаюсь smile
Возможности объектного-ориентированного программирования в сочетании с XMLHttpRequest позволяют создавать весьма сложные и удобные программы ( язык не поворачивается называть их страницами smile).
--------------------
Может поздно, может рано, нет у времени стоп-крана... (Чайф)
PM MAIL ICQ   Вверх
Aliance
Дата 27.4.2005, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Т.е. использовать его нужно только для непрямого создания методов? Хм...не приходилось мне еще встречать такого...

Цитата(Gregof @ 27.4.2005, 07:34)
Посмотри эту сататью

посмотрел, только как это относится к теме? =)

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


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Я хорошо вроде бы понял работу прототипа для создания методов, например:
Код

var x = 2;
Number.prototype.sqr = function() { return this*this }
alert(x.sqr());

var y = "ляляля";
String.prototype.sqr2 = function() { return this }
alert(y.sqr2());


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

var xx = 10;
alert(xx*xx);

PM MAIL WWW ICQ Skype   Вверх
Gregof
Дата 27.4.2005, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Это просто пример.
Вот другой:
Код

var x = 2;
Number.prototype.pow = function(p) { var res=this; for(var i=1;i<p;i++) res*=this;  return res }
alert(x.pow(5));

Или код
Код

var xx = 2;
alert(xx*xx*xx*xx*xx);

удобней?
--------------------
Может поздно, может рано, нет у времени стоп-крана... (Чайф)
PM MAIL ICQ   Вверх
Aliance
Дата 27.4.2005, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Да не в коде дело... Это все можно сделать и иначе, без прототипа. Единственное, что, возиожно, прототип удобен для получения ссылки this? Т.е. иначе ж не получить ее. Это так?
Тогда понятнее. А теперь хочу словами примеры использования прототипа. Например: чтобы сделать калькулятор, используй прототип, там тогда ты легко получишь корень x. (это был пример, с рандомными словами smile )
PM MAIL WWW ICQ Skype   Вверх
Gregof
Дата 28.4.2005, 07:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Aliance @ 27.4.2005, 18:26)
Да не в коде дело... Это все можно сделать и иначе, без прототипа.
Открой книгу по ООП и посмотри для чего нужны объекты и их наследование. Всё что можно сделать с использованием прототипов, можно сделать и без них, но с ними красивей и удобней. Вот и всё smile
Что касается примеров, то их можно найти в тех же книгах по ООП smile
Иначе говоря я не ответил на твой вопрос, а сослался на то что это всё к JavaScript отношения не имеет, это проблема применения или не применения принципов ООП smile. А это вопрос для "религиозных войн" smile
--------------------
Может поздно, может рано, нет у времени стоп-крана... (Чайф)
PM MAIL ICQ   Вверх
Иль
Дата 29.4.2005, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 544
Регистрация: 3.3.2005
Где: Москва

Репутация: 2
Всего: 14



Я не стал вчитываться в топик. Напишу почеловечески. Ведь про ООП обычно много лишней воды льют, брошурку не найти smile , тем более в JS работает не как в Java, PHP и тд.

Вот создал ты конструктор obj, насоздавал с него одинаковых объектов ggg= new obj, много-много, а потом бах, и захотел у всех разом создать новое свойство/метод. А как? А вот как Sardar через прототип и делал.
Код

odj.prototype.getKeys=function() {
... ля-ля-ля ... 
}

вот getKeys сразу у всех и появится, прототип-то у всех один smile

Это сообщение отредактировал(а) Aliance - 29.4.2005, 20:16


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


 




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


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

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