А насчет такой функции что скажите?
function extendClass(Child, Parent) {
var proto = Object.create(Parent.prototype);
proto.constructor = Child;
proto.superClass = Parent;
proto.__super__ = Parent.prototype;
// Как переименовать этот метод?
proto.initialize = function () {
this.superClass.apply(this, arguments);
};
// Как переименовать этот метод? С with работать не будет.
// instance.super(method, arg1, arg2, ...)
proto.super = function (method) {
var args = Array.prototype.slice.call(arguments, 1);
return this.__super__[method].apply(this, args);
};
extend(proto, Child.prototype);
Child.prototype = proto;
}
extend:
function extend(target, source) {
var names = Object.getOwnPropertyNames(source)
, length = name.length;
for (var i = 0; i < length; ++i) {
var desc = Object.getOwnPropertyDescriptor(source, names[i]);
Object.defineProperty(target, names[i], desc);
}
return target;
}
У меня проблемы с именованием переменных.