我正在尝试创建一种强大的方式来“动态”定义类,但我害怕在整个过程中增加不必要的开销。
这是我的创建代码:
function Class(cons,proto) {
var keys = Object.keys(cons);
function _class() {
var i = keys.length;
while( i-- ) {
this[ keys[i] ] = arguments[i] || cons[keys[i]];
}
}
if(proto) {
var f;
for (f in proto) {
_class.prototype[f] = proto[ f ];
}
}
return _class
}
这就是我想如何使用它
var car = Class({
"name": "A car",
"power": 900
},
{
"honk": function() { alert("honk!") }
});
var bmw = new car("BMW", 500);
bmw.honk(); // -> honk!
console.log( bmw.name, bmw.power ); // -> BMW 500
var generic = new car();
generic.honk = function() { alert("custom honk") };
generic.honk(); // -> custom honk!
alert( bmw.honk === car.prototype.honk ); // -> true
alert( generic.honk === car.prototype.honk ); // -> false
console.log( generic.name, generic.power ); // -> A car 900
我做了什么不必要的事情吗?你有什么改进的建议吗?请发表你的意见