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, время: 15:34. |