Что есть конструктор?
Начал изучать javascript. Прочитал много статей по основам ООП, после моего классического понимания ООП в jav'e или php в голове появилась путаница.
Сначала опишу как я понял то что прочитал, а потом задав вопрос. (поправьте если понял не правильно) объект можно создавать 2умя основными способами: через функцию-конструктор и через языковой литерал (var a = {}). Функция конструктор позволяет создать объект по шаблону который описан в её реализации оперируя со ссылкой this. this наследует свойства и методы объекта ссылка на который указана в свойстве prototype конструктора. вот есть такой код: function Child(){} function Parent() { this.name = "Vasia"; } var parent = new Parent(); //тут я указываю свойству конструтора prototype ссылку на объект parent Child.prototype = parent; var child = new Child(); alert(child.name); Ну вот понятно что child и parent имеют право иметь свойства и методы (например name), потому что это ОБЪЕКТЫ. Но как может быть свойство у функции? У конструктора Child?? Это же не объект. На данный момент я понимаю что да, этот код работает. Но по какой такой логике мы НЕ объекту указываем свойство(в данном случае св-во prototype для НЕ объекта Child). Как это работает на более нижнем уровне, на уровне интерпретатора языка? Вот что интересно, столько статей, а про это нет ни слова. |
Цитата:
Цитата:
Цитата:
Цитата:
|
я считал что объекты создаются при помощи new с указанием класса(в данном языке - конструктора). Так каким же объектом является функция? Она же просто объявляется.
to nerv: если не можешь ответить нормально, а только односложными обрывками - лучше промолчи. Какой был в твоём посте смысл. |
imissyouso, вообще, название темы - Что есть конструктор?. Конструктор - это функция.
http://shamansir.github.com/JavaScript-Garden/#function Фленаган: Цитата:
на закуску Цитата:
1. функции объявления 2. функции выражения http://learn.javascript.ru/function-...ion-expression http://shamansir.github.com/JavaScri...nction.general |
то есть здесь это такой тип данных?
и написав function Child(){} интерпретатор создаст объект типа Function с именем Child который будет иметь поле prototype? Потом этот объект можно исползовать как конструктор используя совместно с оператором new? |
Во! оно! Спасибо большое, действительно, читал да не то. Извиняюсь за карму, верну
|
Цитата:
function F() {} alert( typeof F ); Цитата:
Цитата:
Цитата:
|
Цитата:
|
Цитата:
fnc = new Function('a', 'alert(a)'); fnc("Hello"); Цитата:
|
Часовой пояс GMT +3, время: 06:01. |