03.12.2014, 18:11
|
Профессор
|
|
Регистрация: 12.12.2012
Сообщений: 1,398
|
|
kostyanet,
Разница в экономии памяти. У вас функция будет создана для каждого экземпляра, уу меня у каждого экземпляра будет ссылка на функцию из прототипа.
Эх, долго писал
|
|
03.12.2014, 18:14
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Сообщение от Siend
|
у меня сейчас можно сказать что существует уже 1 палитра с кучей переменных и функций их обработки, а хочу я чтобы для каждого canvas своя палитра создавалась, со своими переменными и функциями.
|
var vasya = new SomeConstructor('vasya');
vasya.getName();
// vasya
но лично мне эта хрень с this'ами не нравится. Это голимые публичные проперти. Смысла в getName() ровно 0, ибо vasya.name дает то же самое. Ну, понятно что в методе может быть что-то посложнее, но все равно нормальный класс должен иметь внутренности и интерфейс.
|
|
03.12.2014, 18:16
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
tsigel,
Ясно, спасибо.
|
|
03.12.2014, 18:16
|
Профессор
|
|
Регистрация: 15.03.2014
Сообщений: 561
|
|
Сообщение от kostyanet
|
Это голимые публичные проперти.
|
Никто не мешает прятать приватные в замыкания.
|
|
03.12.2014, 18:18
|
Профессор
|
|
Регистрация: 09.11.2014
Сообщений: 610
|
|
Сообщение от kostyanet
|
Смысла в getName() ровно 0, ибо vasya.name дает то же самое.
|
a=1
Смысла в пременной a нет, ибо 1 дает то же самое
|
|
03.12.2014, 18:18
|
Профессор
|
|
Регистрация: 12.12.2012
Сообщений: 1,398
|
|
Сообщение от kostyanet
|
Это голимые публичные проперти.
|
Никто не мешает писать приватные методы начиная с "_" и писать JSDoc, тогда IDE сама будет показывать что можно трогать а что нет. В данном случае я писал это просто как пример.
|
|
03.12.2014, 18:19
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Теперь такой вопрос, я тоже нуждаюсь. Цитата:
SomeConstructor.prototype.getName = function () {
return this.name;
};
SomeConstructor.prototype.addAge = function () {
return this.age++;
};
SomeConstructor.prototype.addFriends = function (friend) {
return this.friends.push(friend);
};
конец цитаты. Это все можно собрать в один прототип который типа класс, и, затем от него все эти методы наследовать через какой-то шланг в конкретном объекте?
|
|
03.12.2014, 18:22
|
Профессор
|
|
Регистрация: 09.11.2014
Сообщений: 610
|
|
Сообщение от kostyanet
|
Это все можно собрать в один прототип который типа класс, и, затем от него все эти методы наследовать через какой-то шланг в конкретном объекте?
|
они и так наследуются. Твоего кода достаточно, больше них*я н надо для этого
Или ты хочешь суперкласс создать?
|
|
03.12.2014, 18:25
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Сообщение от jsnb
|
Никто не мешает прятать приватные в замыкания.
|
Как? Чтобы у методов был к ним доступ.
__________________
В личку только с интересными предложениями
|
|
03.12.2014, 18:25
|
Профессор
|
|
Регистрация: 12.12.2012
Сообщений: 1,398
|
|
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());
Последний раз редактировалось tsigel, 03.12.2014 в 18:32.
|
|
|
|