Да
Javascript использует Прототип наследования . Таким образом, по существу объекты наследуют объекты (и все является объектом)
Вот пара ссылок, которые должны помочь понять суть.
Вот базовый шаблон модуля:
var MODULE = (function (my) {
my.anotherMethod = function () {
// added method...
};
return my;
}(MODULE));
Тогда вы можете сделать что-то вроде этого, чтобы имитировать наследование:
var MODULE_TWO = (function (old) {
var my = {},
key;
for (key in old) {
if (old.hasOwnProperty(key)) {
my[key] = old[key];
}
}
var super_moduleMethod = old.moduleMethod;
my.moduleMethod = function () {
// override method on the clone, access to super through super_moduleMethod
};
return my;
}(MODULE));
Этот стиль кодирования требует некоторого привыкания, но я определенно предпочитаю его классическому наследованию. Если этот код не имеет смысла, прочитайте лекции Дугласа Крокфорда , и он должен прояснить большинство из них.
адрес редактирования:
Вы можете создавать различные экземпляры этих объектов с помощью оператора new
.
OR
Я бы порекомендовал использовать этот небольшой метод, расширяющий прототип объекта (опять же, если это не имеет смысла, смотрите видео Дугласа Крокфорда). Я забыл точные причины, по которым он так настоятельно рекомендовал его, но по крайней мере это устраняет некоторую путаницу в том, что оператор new
немного отличается от классических языков. Излишне говорить, что использование только с использованием оператора new
недостаточно.
Эта функция расширяет прототип Object методом create. Это потом ...
- Определяет функцию F в пространстве имен.
- Назначает прототип функции
F
объекту, который передается
- возвращает вновь созданный Объект.
(лучше обрисовал в общих чертах сам Дуглас Крокфорд в звене наследования прототипа)
if (typeof Object.create !== 'function') {
Object.create = function (o) {
function F() {}
F.prototype = o;
return new F();
};
}
newObject = Object.create(oldObject);
Итак, используя ваш код ...
var a = Object.create(MODULE_TWO),
var b = Object.create(MODULE_TWO);