Я пытаюсь несколько разных подходов к наследованию Javascript на данный момент. У меня есть следующий код:Наследование JavaScript
('заимствованные' из http://www.kevlindev.com/tutorials/javascript/inheritance/index.htm)
KV = {};
KV.extend = function(subClass, baseClass) {
function inheritance() {}
inheritance.prototype = baseClass.prototype;
subClass.prototype = new inheritance();
subClass.prototype.constructor = subClass;
subClass.baseConstructor = baseClass;
subClass.superClass = baseClass.prototype;
}
function GridView() {
var _ownerElement;
}
GridView.prototype.getOwnerElement = function() {
return this._ownerElement;
}
GridView.prototype.setOwnerElement = function(ownerElement) {
this._ownerElement = ownerElement;
}
GridView.prototype.initialize = function() {
this.setOwnerElement('test');
}
function StreetGridView(dataURL, ownerElement) {
StreetGridView.baseConstructor.call(this);
StreetGridView.superClass.initialize();
StreetGridView.superClass.setOwnerElement(ownerElement);
}
// subclass StreetGridView
KV.extend(StreetGridView, GridView);
Теперь, когда я создаю экземпляр StreetGridView, я не могу назвать getOwnerElement() на нем проблем нет. Все работает так, как ожидалось.
ОДНАКО
Когда я создаю еще один экземпляр, любые изменения, сделанные, например 2, отражается обратно в случае 1.
Я знаю, что это главная проблема с использованием прототипов в качестве информации экземпляра доли. Сегодня утром я ломаю себе голову, но задавался вопросом, есть ли там кто-то, кто мог бы указать мне в правильном направлении!
Thanks
Ответил здесь: http://stackoverflow.com/a/12816953/885464 –