将普通的javascript哈希转换为适当的对象

时间:2014-06-29 00:37:53

标签: javascript oop

我需要为我的纯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这样的东西在这里似乎毫无用处。

2 个答案:

答案 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();