Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Есть ли разумное объяснение столь чрезмерной сложности наследования в js? (https://javascript.ru/forum/misc/37293-est-li-razumnoe-obyasnenie-stol-chrezmernojj-slozhnosti-nasledovaniya-v-js.html)

father_gorry 14.04.2013 15:57

Есть ли разумное объяснение столь чрезмерной сложности наследования в js?
 
function Wall(){
	this.color = "red";
}
function Room(){
	this.size = "small";
}
//а теперь я хочу "просто унаследовать объект от объекта", как написано в руководстве.
Room.prototype = Wall;
console.log("Room color", Room.color); //ждем, что будет red, однако оказывается undefined
//Оказывается, нужно поступить намного сложнее
Room.prototype = new Wall(); //Сначала создать экземпляр родителя и связать его с потомком
var room1 = new Room(); //Затем - экземпляр потомка
console.log("room1 color", room1.color); //red. И только теперь оно заработало.


Вывод: нельзя наследовать функцию от функции, можно только экземпляр от функции через другой экземпляр.
Почему сделано так сложно? Неужели авторы языка, когда писали спецификацию, не увидели этого?

dmitriymar 14.04.2013 16:08

Цитата:

Сообщение от father_gorry
нельзя наследовать функцию от функции, можно только экземпляр от функции через другой экземпляр.

чего?
какой экземпрляр? чего экземпляр?
Цитата:

Сообщение от father_gorry
new Wall(); //Сначала создать экземпляр родителя и связать его с потомком

чего ? вобщето это создаётся объект с помощью конструктора Wall и затем "устанавливается прототип" Room

Цитата:

Сообщение от father_gorry
//а теперь я хочу "просто унаследовать объект от объекта", как написано в руководстве.
Room.prototype = Wall;

какого объекта? Wall -это функция.

Цитата:

Сообщение от father_gorry
console.log("Room color", Room.color); //ждем, что будет red, однако оказывается undefined
//Оказывается, нужно поступить намного сложнее

с чего такие ожидания? Room это функция, разве создавалось и инициировалось её свойство color?

во загнул
Цитата:

Сообщение от father_gorry
Неужели авторы языка, когда писали спецификацию, не увидели этого?

.:blink: Хорошо что вы, не один из авторов :)

А разумное объяснение есть -вы вобще не знаете основ.
изучите основы для начала
Цитата:

Сообщение от father_gorry
нельзя наследовать функцию от функции

и смысл сего действа? ни разу не слышал о наследовании функции от функции

megaupload 14.04.2013 16:44

Есть, дело в том что яваскрипт был расчитан на написание прогармм в 100 строчек кода максимум так что с ООП они особо не заморачивались..


father_gorry 14.04.2013 18:01

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

Нельзя наследовать функции? Хорошо, буду наследовать объекты.

var Wall = new function(){
	this.color = "red";
}
var Room = new function(){
	this.size = "small";
}
Room.prototype = Wall; 
console.log(Room.color); //undefined, хотя по логике должен присутствовать
//попробуем самым прямым и логичным способом
Room.prototype.color="white";
console.log(Room.prototype.color, Wall.color);//white, white.

Отлично, теперь я умею легко управлять свойствами предка из потомка. Но зачем???

Aves 14.04.2013 18:31

Я далеко не специалист в ООП, и классическое наследование большинства ЯП приводит меня в уныние. А вам оно похоже нравится, потому что вы пытаетесь его отыскать там, где его нет. Вроде как только в ES6 появится обертка над прототипным наследованием, похожая на классическое.

В прототипном вроде есть тонкости и детали, но лично мне кажется, что главное понять то, что все объекты создаются функциями на основании прописанного в функции объекта-прототипа. И всё.
Взяли любую функцию, прописали ей прототип, вызвали с new, получили объект с нужной цепочкой прототипов, и соответственно нужными методами и свойствами.
function f(){}
f.prototype = new String();
s = new f();
typeof s.toLowerCase // 'function'
f.prototype.myTest = 'qwerty';
s.myTest; // 'qwerty'

То есть прототипы ставить нужно у функции-конструктора, а не у созданного объекта.

SkyLight 14.04.2013 19:17

Цитата:

Сообщение от father_gorry
console.log(Room.color); //undefined, хотя по логике должен присутствовать

Это с какой такой стати оно должно присутствовать? Вы просто не понимаете разницу между свойствами "класса" и свойствами экземпляра. Это две разные вещи.
Цитата:

Сообщение от father_gorry
Сейчас задача - понять, как удобно реализуется ООП в JS

1. В большинстве задач ООП в таком ключе не требуется. 2. Если все-таки надо, то есть много статей. описывающих всего несколько вполне себе устоявшихся паттернов в JS. И то, что вы их не понимаете, не значит, что они кривые/неправильные.

megaupload 14.04.2013 20:15

Цитата:

Сообщение от father_gorry
Нельзя наследовать функции? Хорошо, буду наследовать объекты.

именно, тут ПРОТОТИПНОЕ наследование..

ты создаешь класс (функцию), и задаешь для неё ПРОТОТИП, ЭТАЛОН так сказать, от которого будут все наследовать если различия не указаны явно.


function Animal(){
   this.animal = true;
}

function Cat(){
  this.cat = true;
}

Cat.prototype = new Animal; // Укажем, что эталоном для Котов будет Животное (создадим его в специальное свойство конструктора котов, таким образом все созданные этим конструктором коты будут ровняться на это животное и стараться быть похожими на него ([B]даже если оно видоизменится кстати[/B]) )

new Cat().animal // true
new Cat().cat // true



тадаааа


терь покажу какой в этом прикол

function Animal(){
   this.animal = true;
}

function Cat(){
  this.cat = true;
}

Cat.prototype = new Animal; 

new Cat().ololo // unefined   - НИ У КОТОВ НИ У ЖИВОТНЫХ НЕТ ТАКОГО СВОЙСТВА 

// что ж все коты будут походить на то эталонное животное которое мы создали в свойство prototype конструктора говорите? хм..

  // ну хорошо, тут щас лежит животное, эталон, так сказать для котов,  добавлю ка я ему свойство. проверим появится ли оно у котов?
Cat.prototype.ololololololo = 11;
new Cat().ololololololo //11


// хм прикольно, а что если я уже создал 900000 котов, и ТОЛЬКО ПОСЛЕ ЭТОГО добавил в в их прототип новое свойство.. появится ли оно У УЖЕ СОЗДАННЫХ ДДООО этого котов?

megaupload 14.04.2013 20:27

Если да, то это означает что мы можем добавить в прототип например Массивов какой нить метод который автоматически появятся у всех уже созданных до этого массивов и это будет охуенно.

Напрмиер
Array.prototype.ololo = function(){}

tenshi 14.04.2013 20:27

Не забываем вызывать конструктор предка

function Wall(){
	this.color = "red";
}
function Room(){
        Wall.apply(this, arguments)
	this.size = "small";
}
console.log("Room color", Room.color);

Aetae 14.04.2013 21:52

Цитата:

Сообщение от tenshi (Сообщение 246184)
Не забываем вызывать конструктор предка

function Wall(){
	this.color = "red";
}
function Room(){
        Wall.apply(this, arguments)
	this.size = "small";
}
console.log("Room color", Room.color);

Взяли и убили у человека зарождающееся понимание...))

megaupload 14.04.2013 22:03

Цитата:

Сообщение от Aetae
Взяли и убили у человека зарождающееся понимание...))

вот я млять специально ни слова не говорил ни про чо такое а) а он все засрал мне

father_gorry 15.04.2013 11:14

Почему наследования не происходит? Я проверил, скрипт не создает ошибок.
var Wall = new function(){
	this.color = "red";
}
var Room = new function(){
	this.size = "small";
}
Room.prototype = Wall; //объявляем, что Room наследуктся от Wall
Room.prototype.color="white"; //можно задать через Wall.color - будет то же самое. 
console.log(Room.prototype.color, Wall.color); //Проверили, действительно так.

console.log(Room.color); //Undefined! Опа. Наследования не произошло.

father_gorry 15.04.2013 11:54

А всё, у меня получилось "наследование с помощью цепочек прототипов". Только выглядит это очень грустно.
var Animal = function(){
	this.prototype = new function(){//создаем базовый прототип
		this.walk = true;
	}
}
var Cat = function(){
	this.prototype = new Animal();//наследуем от Animal
}
console.log(new Cat().walk);//не получилось
console.log(new Cat().prototype.prototype.walk); //true /A так - работает

Цепочки вида Object.prototype.prototype.prototype.prototype.pro totype.property - неудобны, потому что если убрать элемент из последовательности наследования, то придется редактировать абсолютно все вызовы.

Aves 15.04.2013 12:02

Цитата:

Сообщение от father_gorry (Сообщение 246246)
Почему наследования не происходит? Я проверил, скрипт не создает ошибок.
var Wall = new function(){
	this.color = "red";
}
var Room = new function(){
	this.size = "small";
}
Room.prototype = Wall; //объявляем, что Room наследуктся от Wall
Room.prototype.color="white"; //можно задать через Wall.color - будет то же самое. 
console.log(Room.prototype.color, Wall.color); //Проверили, действительно так.

console.log(Room.color); //Undefined! Опа. Наследования не произошло.

Потому что код бессмысленный. Если опустить тонкости, то можно сказать, что у объектов нет прототипов, у них есть конструкторы. Прототипы устанавливаются у конструкторов. А вы у объекта Room сами создаете свойство prototype, а ничего не "объявляете". Оно к прототипам и наследованию никакого отношения не имеет, просто назвали вы его так же. То что у вас написано можно записать короче, заменив название prototype на obj например:
var Wall = {color:'red'};
var Room = {size:'small', obj: Wall}; //{size:'small', obj: {color:'red'}}

Hekumok 15.04.2013 12:02

Цитата:

Сообщение от father_gorry (Сообщение 246246)
Почему наследования не происходит? Я проверил, скрипт не создает ошибок.

var Wall = new function(){
	this.color = "red";
} // объявили функцию-конструктор и тут же вызвали её, создался объект со свойством color, присвоили переменной Wall ссылку на этот объект
var Room = new function(){
	this.size = "small";
} // объявили функцию-конструктор и тут же вызвали её, создался объект со свойством size, присвоили переменной Room ссылку на этот объект
Room.prototype = Wall; /* здесь мы нифига НЕ объявляем, что Room наследуктся от Wall!
В этой строчке мы записываем в свойство prototype объекта Room ссылку на объект Wall
Ведь свойство объекта prototype - это не прототип объекта! прототип находится в скрытом свойстве [[Prototype]] объекта (в некот. браузерах прототип доступен через свойство __proto__)
*/
Room.prototype.color="white"; /* можно задать через Wall.color - будет то же самое - да, это правда)) ведь Room.prototype и Wall ссылаются на один и тот же объект
*/
console.log(Room.prototype.color, Wall.color); //Проверили, действительно так.

console.log(Room.color); /* Undefined! Опа. Наследования не произошло.
Ну и спрашивается, какого нафик наследования?
Ессессно, у Room нет свойства color, мы же его не присвоили
*/

Aves 15.04.2013 12:06

Цитата:

Сообщение от father_gorry
А всё, у меня получилось "наследование с помощью цепочек прототипов". Только выглядит это очень грустно.
var Animal = function(){
    this.prototype = new function(){//создаем базовый прототип
        this.walk = true;
    }
}
var Cat = function(){
    this.prototype = new Animal();//наследуем от Animal
}
console.log(new Cat().walk);//не получилось
console.log(new Cat().prototype.prototype.walk); //true /A так - работает

Цепочки вида Object.prototype.prototype.prototype.prototype.pro totype.property - неудобны, потому что если убрать элемент из последовательности наследования, то придется редактировать абсолютно все вызовы.

Здесь вы занимаетесь тем же, чем и большинство приходящих на javascript - пишете собственное наследование, вместо того, чтобы разобраться, как оно в нем устроено. И мне интересно, если в наследовании на классах удалить кокой-нибудь промежуточный класс, то все в порядке будет?

DjDiablo 15.04.2013 12:08

Пример наследование из библиотеки createJs с которой сейас работаю
//обьявляем неймспейс
this.createjs = this.createjs||{};

//наследуем
(function() {
    //конструктор
    var Shape = function(prop) {
          //вызов функции инициализации
          this.initialize(prop);
    }

    //наследуем от родителя
    var p = Shape.prototype = new createjs.DisplayObject();

    //сохраним функцию инициализации родителя, вдруг пригодится
    p.DisplayObject_initialize = p.initialize;

    //инициализация, по сути конструктор из классического ООП
    p.initialize=function(prop){
        this.x=prop.x;
        this.y=prop.y;
    }


    // обьявляем новые методы и свойства
    p.graphics = null;
    p.test = function(){ hello() };

    //приватный метод
    function hello(){
        alert('hello');
    }

    //записываем в неймспейс
    this.createjs.Shape=Shape  
})()


хочу разЪяснить один момент.(для новичков)
Главный недостаток вышеприведённого примера в том что вызывается конструктор DisplayObject при наследовании. Иногда это нужно, а иногда недопустимо.

Эта проблема легко решается.
Если вызов контструктора нужен, тогда оставляете
var p = Shape.prototype = new createjs.DisplayObject();

А если ненужен, то пишите
var p = Shape.prototype = Object.create( createjs.DisplayObject.prototype);


+ если вам вдруг понадобится вызвать конструктор родителя (иногда используется цепочка конструкторов) вы можете его вызвать через DisplayObject_initialize

вот ради этих возможностей и использован трюк с выносом кода конструктора в функцию initialize

P.S. Однако я сам использую по возможности функцию класс и я не вижу смысла боятся подобных функций.

Hekumok 15.04.2013 12:10

Цитата:

Сообщение от father_gorry
А всё, у меня получилось "наследование с помощью цепочек прототипов".

Никакого наследования у вас не получилось!
Цитата:

Сообщение от father_gorry
Только выглядит это очень грустно.

Да, действительно, ваш код и понимание прототипов выглядит грустно ;)

dmitriymar 15.04.2013 12:52

Цитата:

Сообщение от Aves
Если опустить тонкости, то можно сказать, что у объектов нет прототипов, у них есть конструкторы. Прототипы устанавливаются у конструкторов.

.... здорово , а ничего что ссылка на конструктор это свойство прототипа, а не прототип свойство конструктора ?

dmitriymar 15.04.2013 13:09

Цитата:

Сообщение от Aves
И мне интересно, если в наследовании на классах удалить кокой-нибудь промежуточный класс, то все в порядке будет?

Изменить прототип существующего объекта полностью ? Для этого он может и не быть промежуточным в длинной цепочке. достаточно у одного конструктора полностью сменить прототип .
А что мешает протестить самому? -это несколько строк кода всего
function A(){this.num =10};
function D(){this.num =20};
function B(){}
B.prototype = new A;
var c = new B;
alert(c.num)
B.prototype = new D;
alert(c.num)

Aves 15.04.2013 13:10

Цитата:

Сообщение от dmitriymar (Сообщение 246278)
.... здорово , а ничего что ссылка на конструктор это свойство прототипа, а не прототип свойство конструктора ?

Зашибись, то есть String.prototype это я придумал, а на самом деле такого не существует.

И я знаю, что произойдет с объектом, если поменять прототип у его конструктора, мне для этого не нужно "несколько строчек" писать, я спрашивал про классы в других язаках программирования.

Вы бы проспались сначала, и повнимательнее читать стали, прежде чем позориться.

megaupload 15.04.2013 13:15

father_gorry,
ебать ты нубло

dmitriymar 15.04.2013 13:21

Цитата:

Сообщение от Aves
Сообщение от dmitriymar Посмотреть сообщение
.... здорово , а ничего что ссылка на конструктор это свойство прототипа, а не прототип свойство конструктора ?
Зашибись, то есть String.prototype это я придумал, а на самом деле такого не существует.

Так и есть 90%, из того что ты пишешь, ты сам придумываешь. И маскируешь это под что то знакомое всем, так что с первого взгляда выглядит правдоподобно. Учи основы -ты часто бред несёшь.
Причём прототип "строки" к тому что, ты конструктор сделал родителем прототипа , а не прототип родительским объектом ссылки на конструктор?
Фленеган 6 издание стр . 226
var F = function (){}
var p = F.prototype
var c = p.constructor
c === F

dmitriymar 15.04.2013 13:33

Цитата:

Сообщение от Aves
Вы бы проспались сначала, и повнимательнее читать стали, прежде чем позориться.

Да кстати, обрати внимание что, в моих сообщениях стоят цитаты, с твоих сообщений.
Поэтому прежде чем давать, подобные "советы" подумай десять раз о том как ты позоришься перекручивая и пытаясь выставить всё в другом свете:D

rgl 15.04.2013 15:46

Цитата:

Сообщение от Aves
И я знаю, что произойдет с объектом, если поменять прототип у его конструктора, мне для этого не нужно "несколько строчек" писать

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

rgl 15.04.2013 15:58

Цитата:

Сообщение от Aves
Если опустить тонкости, то можно сказать, что у объектов нет прототипов, у них есть конструкторы.

Вы путаете прототип объекта и созвучное свойство prototype конструктора. У объекта есть прототип, хотя в стандарте (по крайней мере в старом) нет к нему прямого доступа. То, что кажется свойством constructor объекта, на самом деле свойство прототипа, которое может быть, а может и не быть выставлено правильно. Оно почти никогда не нужно, поэтому о нем часто забывают.
function Test() {}
Test.prototype = { a:1, b:2, constructor:Test }
Без выделенной части свойство constructor созданного объекта будет указывать не на Test а на Object, тем не менее прототипом созданного объекта будет Test.prototype

Aetae 15.04.2013 16:16

Опять все упоролись по ооп. =\

SV0L0CH 15.04.2013 16:23

Обсуждают прототипное наследование, но в приведнных примерах кода нет применения instanceof. Зачем вообще такое наследование без instanceof?

father_gorry 15.04.2013 19:31

Цитата:

Сообщение от dmitriymar (Сообщение 246281)
Изменить прототип существующего объекта полностью ? Для этого он может и не быть промежуточным в длинной цепочке. достаточно у одного конструктора полностью сменить прототип .
А что мешает протестить самому? -это несколько строк кода всего
function A(){this.num =10};
function D(){this.num =20};
function B(){}
B.prototype = new A;
var c = new B;
alert(c.num)
B.prototype = new D;
alert(c.num)

В Вашем примере оба раза 10. Где ошибка?

И заодно, почему нельзя вместо
function A(){this.num =10};
function B(){}
B.prototype = new A;

писать
function B(){
  this.prototype = new function(){this.num =10}
};

?
Второй вариант ведь намного лаконичнее и проще бы воспринимался!

Hekumok 15.04.2013 20:00

Цитата:

Сообщение от father_gorry
В Вашем примере оба раза 10. Где ошибка?

С чего это вы взяли, что там ошибка? :blink:
Цитата:

Сообщение от father_gorry
В И заодно, почему нельзя вместо
function A(){this.num =10};
function B(){}
B.prototype = new A;

писать
function B(){
  this.prototype = new function(){this.num =10}
};

?
Второй вариант ведь намного лаконичнее и проще бы воспринимался!

Так НЕЛЬЗЯ писать потому, что свойство prototype - это НЕ прототип, а обычное свойство! Поймите вы это уже

father_gorry 15.04.2013 20:50

Вот еще:
"В Javascript функция тоже является объектом".
Object.prototype = ... - можно
function.prototype =... - ошибка

father_gorry 15.04.2013 20:55

Цитата:

Сообщение от Hekumok (Сообщение 246379)
Так НЕЛЬЗЯ писать потому, что свойство prototype - это НЕ прототип, а обычное свойство! Поймите вы это уже

Хорошо, прототип - это не прототип (sic!), а свойство. Так я и пользуюсь им как свойством, в результате - prototype.prototype.prototype.. Да, он и ведет себя как обычное свойство. Но при чем здесь тогда наследование через прототип, его же нет?

dmitriymar 15.04.2013 20:55

Цитата:

Сообщение от father_gorry
Вот еще:
"В Javascript функция тоже является объектом".
Object.prototype = ... - можно
function.prototype =... - ошибка

Вопрос -а на хрена это ?
Цитата:

Сообщение от Hekumok
Сообщение от father_gorry
В Вашем примере оба раза 10. Где ошибка?
С чего это вы взяли, что там ошибка?

это всё объясняет . не?
функция потомок чего? потомку(объекту) можно переопределить прототип после создания ?- Нет
Примеров приведено море, хватит чтоб внимательно рассмотреть и понять как работает, а не двигать свои теории. Причём те, на какие ответ был дан однозначный ранее


Цитата:

Сообщение от father_gorry
Хорошо, прототип - это не прототип (sic!), а свойство. Так я и пользуюсь им как свойством, в результате - prototype.prototype.prototype.. Да, он и ведет себя как обычное свойство. Но при чем здесь тогда наследование через прототип, его же нет?

не надоело? основы изучите -вопросы отпадут

Цитата:

Сообщение от father_gorry
Но при чем здесь тогда наследование через прототип, его же нет?

А чем является свойство prototype ? ............(сюда самостоятельно впишите) на объект родитель
как и где ищутся наследуемые свойства/методы?

tenshi 15.04.2013 22:20

Цитата:

Сообщение от Aetae (Сообщение 246197)
Взяли и убили у человека зарождающееся понимание...))

Если бы. Он даже не заметил правильного ответа, куда интересней витать в собственных фантазиях..

megaupload 15.04.2013 22:28

Function а не function лол))

Aves 16.04.2013 11:03

Цитата:

Сообщение от father_gorry (Сообщение 246385)
Хорошо, прототип - это не прототип (sic!), а свойство. Так я и пользуюсь им как свойством, в результате - prototype.prototype.prototype.. Да, он и ведет себя как обычное свойство. Но при чем здесь тогда наследование через прототип, его же нет?

var red = {color:'red'};
function Circle(){
    this.shape = 'circle;
}
Circle.prototype = red;
var redCircle = new Circle();
alert(redCircle.color); // 'red'
red.brightness = 'dark';
alert(redCircle.brightness); // 'dark'


Это - самая основа наследования в JS. Пока вы не разберетесь с этим, любой тролль типа dmitriymar сможет убедительно напудрить мозги, объясняя что прототип - это [[Prototype]], а совсем не prototype, который у constructor, потому что constructor это совсем не конструктор; и только кое-где этот прототип - __proto__. А конструктор - это вообще песня, потому как будучи в той же мере объектом, что и те, которые создает, имеет одновременно с prototype еще и прототип.

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

rgl 16.04.2013 11:28

Aves,
Чушь несете. Вам бы для начала разобраться в вопросе, а потом уже других учить. А то нахватались обрывочных знаний, и дополнили их своими ошибочными домыслами.
В вашем же примере constructor вновь созданного объекта redCircle - это вовсе не конструктор. Конструктор - функция Circle, а constructor указывает на Object
var red = {color:'red'};
function Circle(){
    this.shape = 'circle';
}
Circle.prototype = red;
var redCircle = new Circle();
alert(redCircle.color); // 'red'
red.brightness = 'dark';
alert(redCircle.brightness); // 'dark'


alert( redCircle.constructor == Circle );
alert( redCircle.constructor == Object );

Т.е. constructor - не конструктор. Точно так же можно показать, что prototype - не прототип

dmitriymar 16.04.2013 11:42

Цитата:

Сообщение от Aves
Это - самая основа наследования в JS. Пока вы не разберетесь с этим, любой тролль типа dmitriymar сможет убедительно напудрить мозги, объясняя что прототип - это [[Prototype]], а совсем не prototype, который у constructor, потому что constructor это совсем не конструктор; и только кое-где этот прототип - __proto__. А конструктор - это вообще песня, потому как будучи в той же мере объектом, что и те, которые создает, имеет одновременно с prototype еще и прототип.

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

Дого с силами собирался ? подводил под свой бред теорию ?
Во намешал, намешал . А где белочки и орешки? Такие изыскания обычно начинаются с эпиграфа:

У меня закончились помогающие таблетки, А потом пришла белочка с орешками . И в ходе дружеских посиделок родилась теория:.....

Цитата:

Сообщение от Aves
любой тролль типа dmitriymar

Даун пасть закрой -зубы целее будут .
Ещё, один фантаст теоретик, несущий свой бред в массы

Aves 16.04.2013 11:48

Вам самим с собой не надоело общаться, трололо? Где я писал про СВОЙСТВО CONSTRUCTOR у объекта? Я про него вообще не упоминал. Конструктор - это ФУНЦКЦИЯ, СОЗДАЮЩАЯ ОБЪЕКТ. Как выяснить, какая, это другой вопрос.
Если хотите мне что-то попытаться объяснить, хотя бы потрудились понять, о чем я пишу.
Хотя можете не напрягаться, на сообщения троллей, которые видят только то,ч то хотят видеть, я больше реагировать не намерен.

dmitriymar 16.04.2013 11:57

Цитата:

Сообщение от Aves
Вам самим с собой не надоело общаться, трололо? Где я писал про СВОЙСТВО CONSTRUCTOR у объекта? Я про него вообще не упоминал. Конструктор - это ФУНЦКЦИЯ, СОЗДАЮЩАЯ ОБЪЕКТ. Как выяснить, какая Если хотите мне что-то попытаться объяснить, хотя бы портудилиь понять, о чем я пишу.
Хотя можете не напрягаться, на сообщения троллей, которые видят только то,ч то хотят видеть, я больше реагировать не намерен.

Во как уже перекрутил уже... Ну и даунито
С чего всё начиналось:
Цитата:

Сообщение от Aves
Если опустить тонкости, то можно сказать, что у объектов нет прототипов, у них есть конструкторы

...
Еще раз для бредоносной пчелы, возомнивших себя спецом-теоретиком:
прототип это прототип, конструктор это конструктор.
У прототипа есть свойство конструктор какое указывает на функцию конструктор(не рассматриваем случаи когда не указывает ).

И не нужно "изысков" бредовых, для доказательств бреда надуманного


Часовой пояс GMT +3, время: 07:27.