kostyanet,
Разница в экономии памяти. У вас функция будет создана для каждого экземпляра, уу меня у каждого экземпляра будет ссылка на функцию из прототипа. Эх, долго писал :( |
Цитата:
vasya.getName(); // vasya но лично мне эта хрень с this'ами не нравится. Это голимые публичные проперти. Смысла в getName() ровно 0, ибо vasya.name дает то же самое. Ну, понятно что в методе может быть что-то посложнее, но все равно нормальный класс должен иметь внутренности и интерфейс. |
tsigel,
Ясно, спасибо. |
Цитата:
|
Цитата:
a=1 Смысла в пременной a нет, ибо 1 дает то же самое |
Цитата:
|
Теперь такой вопрос, я тоже нуждаюсь. Цитата:
SomeConstructor.prototype.getName = function () { return this.name; }; SomeConstructor.prototype.addAge = function () { return this.age++; }; SomeConstructor.prototype.addFriends = function (friend) { return this.friends.push(friend); }; конец цитаты. Это все можно собрать в один прототип который типа класс, и, затем от него все эти методы наследовать через какой-то шланг в конкретном объекте? |
Цитата:
Или ты хочешь суперкласс создать? |
Цитата:
|
kostyanet,
Да var SomeConstructor = function(name, age) { this.name = name; this.age = age; }; SomeConstructor.prototype.getName = function () { return this.name; }; SomeConstructor.prototype.addAge = function () { return this.age++; }; var SomeChild = function () { SomeConstructor.apply(this,arguments) }; SomeChild.prototype = Object.create(SomeConstructor.prototype); SomeChild.constructor = SomeChild; SomeChild.prototype.childMethod = function () { return true; } var child = new SomeChild("child", 20); alert(JSON.stringify(child, "", 4)); alert(child.childMethod()); |
Часовой пояс GMT +3, время: 06:12. |