作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 MooTools 类定义的名为 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 创建 User 的新实例> 构造函数中的值。或者也许传递 DTO 本身并使用:
$each(userDTO,function(value,key){...}
我正在查看将 myDTO 的属性复制到 myClass 中的 $extend(myClass, myDTO)
。似乎是目前最简单的选择。
很高兴知道复制 DTO 值的推荐方法。非常感谢!
最佳答案
就我个人而言,我会编写一个函数将 DTO 转换为 User,然后通过该函数映射 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 转换为 User 的所有知识放在一个“位置”在架构方面是一件好事。
关于javascript - 如何最好地将对象(从 JSON 解码获得)导入 MooTools 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3672075/
我是一名优秀的程序员,十分优秀!