我使用MooTools Class定义了一个名为 User 的类。该类包含一个名为 fullName 的getter(它操纵 firstName 和 lastName )。
var User = new Class({
initialize:function(firstName, lastName){
this.firstName = firstName;
this.lastName = lastName;
},
fullName:function(){
return this.firstName + ' ' + this.lastName;
}
});
我可以通过AJAX从Java后端请求用户配置文件列表并获取JSON响应,基本上是Javascript对象数组。
[{firstName:'John', lastName:'Doe'},{firstName:'Bob', lastName:'Hope'},....]
是否建议将此DTO数组转换为MooTools 用户类?
我可以使用 Array.each 并通过传递每个DTO的 firstName 和 lastName 用户的新实例>构造函数中的值。或者也许通过DTO本身并使用:
$each(userDTO,function(value,key){...}
我正在查看$extend(myClass, myDTO)
,它将myDTO的属性复制到myClass中。似乎是目前最简单的选择。
了解推荐的复制DTO值的方法会很高兴。非常感谢!
答案 0 :(得分:2)
就个人而言,我会编写一个函数将DTO转换为用户,然后通过该函数映射DTO列表:
var dtos = ...
var f = function(dto) { return new User(dto.firstName,dto.lastName) };
var users = dtos.map(f);
这是其他语言的常用方法(可以归类为“工厂方法”模式的实例) - 我认为没有理由不在javascript中使用它。
它可能看起来不像(例如)那样“酷”:
var users = dtos.map(function(dto){ return $extend(new User(),dto); });
但是DTO可能会发生变化(重命名,删除或 - 最有可能 - 添加字段),并且自动(即:不受控制地)将这些更改传播到您的课程中很少是一个好主意。
此外,将所有关于如何将DTO转换为用户的知识放在一个“地方”是一件好事。