Цитата:
|
Object.defineProperty(Object.prototype, "extends",
|
Определяй не для Object.prototype, а для Function.prototype. Этот метод применим только к функциям.
Задачу можно решить наследованием от объекта, а не от класса:
Object.defineProperty(Function.prototype, "extends", {
value: function(parent) {
*!*var inheritFrom = typeof parent == "function" ? parent.prototype : parent;*/!*
this.prototype = Object.create(inheritFrom, {
constructor: {
value: this,
writable: true,
configurable: true,
enumerable: false
}
});
},
enumerable: false,
writable: true,
configurable: true
});
var IODevice = {
};
function Device1() {}
Device1.extends(IODevice);
function Device2() {}
Device2.extends(IODevice);
new Device1();
new Device2();
new IODevice(); //TypeError: IODevice is not a constructor
В ES6 так:
var IODevice = {};
class Device1 prototype IODevice {
}
class Device2 prototype IODevice {
}