gpt4 book ai didi

javascript - 创建类的函数

转载 作者:行者123 更新时间:2023-11-28 02:23:02 25 4
gpt4 key购买 nike

我正在尝试创建一种健壮的方法来“动态”定义类,但我担心会给整个过程增加不必要的开销。

这是我的创建代码:

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

我做了什么不必要的事情吗?您有什么改进建议吗?请发表您的意见

最佳答案

Am I doing anything unnecessary?

我看不到,但您需要向我们展示一个实际用例,而不是演示示例:-)

Do you have any suggestions for improvement?

循环Object.keys(cons)并使用 ikeys[i] 之外的任何其他内容容易出错,如 Object.keys 不保证任何订单。也可能发生 bmw.power"BMW"bmw.name500 .

关于javascript - 创建类的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15360181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com