假设我从服务器接收到一些 JSON 对象,例如 Person 对象的一些数据:
{firstName: "Bjarne", lastName: "Fisk"}
现在,我想要一些基于这些数据的方法,例如用于计算全名:
fullName: function() { return this.firstName + " " + this.lastName; }
这样我就可以
var personData = {firstName: "Bjarne", lastName: "Fisk"};
var person = PROFIT(personData);
person.fullName(); // => "Bjarne Fisk"
我基本上想要在这里做的是向对象的原型添加一个方法。该fullName()
方法是通用的,因此不应添加到数据对象本身。像..:
personData.fullName = function() { return this.firstName + " " + this.lastName; }
...会导致大量冗余;并且可以说“污染”数据对象。
将此类方法添加到简单数据对象的当前最佳实践方法是什么?
编辑:
有点跑题了,但是如果上面的问题可以解决,就可以做一些不错的伪pattern matching
像这样:
if ( p = Person(data) ) {
console.log(p.fullName());
} else if ( d = Dog(data) ) {
console.log("I'm a dog lol. Hear me bark: "+d.bark());
} else {
throw new Exception("Shitty object");
}
Person
如果对象具有正确的属性,Dog
将添加方法。data
如果不是,则返回 falsy(即数据不匹配/一致)。
奖励问题:有谁知道使用或启用此功能(即使其变得容易)的库?它已经是javascript模式了吗?如果是这样,它叫什么;你有详细说明的链接吗?谢谢 :)