我需要为我的纯JS对象添加更多OO风味。基本上,我在服务器端
class Superitem {
List<Item> items;
Whatever whatever;
}
class Item {
List<Subitem> subitems;
Whatever whatever;
}
class Subitem {
List<Whatever> whatevers;
}
在客户端中,我将superitem作为普通的Javascript哈希,并希望将其转换为更好的东西。我开始喜欢
Superitem(plain) {
this.items = plain && plain.items || [];
this.whatever = new Whatever(plain.whatever);
}
但它太冗长了(我真正的课程更复杂),我更怀疑它是否值得努力。我不想在Javascript中模仿Java,只是想添加一些有用的方法。有没有更好的办法?像$.extend
这样的东西在这里似乎毫无用处。
答案 0 :(得分:1)
$.extend
几乎没用。你可以这样定义构造函数[s]:
function Superitem(data) {
$.extend(this, { items: [] }, data);
this.whatever = new Whatever(this.whatever);
}
$.extend
将首先注入this
默认值({ items: [] }
),然后注入提供给函数的普通对象。然后,它会将whatever
转换为Whatever
。
答案 1 :(得分:0)
对象哈希正如您所说 已经是普通的常规对象。
如果您尝试合并多个属性/方法,则jQuery的extend
方法有效,但不需要。
// Create an object through JSON, just to show its a regular
// object.
var obj = JSON.parse('{"prop" : true}');
obj.method = function() {alert(this.prop)};
obj.method();