「オンザフライ」でクラスを定義するための堅牢な方法を作成しようとしていますが、プロセス全体に不要なオーバーヘッドを追加することを恐れています。
これが私の作成コードです:
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
不必要なことをしていますか?改善のための提案はありますか?あなたの意見を投稿してください