Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   В чём отличие конструктора от прототипа? (http://www.flasher.ru/forum/showthread.php?t=206290)

es2 25.01.2014 20:46

В чём отличие конструктора от прототипа?
 
Согласно флэшэвскому мануалу (в котором даётся довольно-таки скудное пояснение) :

Код:

constructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта.
prototype : Object
[статические] Ссылка на модель объекта класса или функции.

Поясните пожалуйста в каких случаях нужен конструктор, а в каких прототип?
Ведь, если я не ошибаюсь, конструктор - это то, что объявляется ключевым словом new,
а прототип - это то чему присваиваем конструктор? Мне думается, что логично было предположить, что это одно и тоже, но почему-то терзают меня смутные сомнения.

Помогите, пожалуйста, разобраться

olexandr 26.01.2014 01:41

Забудьте о prototype. За почти 5 лет программирования на AS3 он мне ни разу не понадобился.
Я не представляю, что с его помощью можно сделать такого, чего нельзя с помощью обычного ООП. Ну разве, что костыли какие-то...

RonEXI 26.01.2014 09:20

prototype можно использовать для расширения функционала встроенных классов.
К примеру:
Код AS3:

Array.prototype.last = function():*{
  return this[this.length-1];
}
var a = new Array(1, 2, 3, 4, 5);
trace(a.last());


olexandr 26.01.2014 14:17

Цитата:

Сообщение от RonEXI (Сообщение 1158107)
prototype можно использовать для расширения функционала встроенных классов.
К примеру:
http://www.flasher.ru/forum/images/r..._collapsed.gif Код AS3:
Array.prototype.last = function():*{ return this[this.length-1]; } var a = new Array(1, 2, 3, 4, 5); trace(a.last());

Я знаю, но ведь следуя ООП, эту функцию логичнее будет вынести в какой-нибуть класс и сделать ее статической к примеру. Либо унаследовать Array (если он позволяет это).

Babylon 26.01.2014 15:50

Даже если не позволяет всегда можно сделать композицию


Часовой пояс GMT +4, время: 01:55.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.