只是一个快速的想法,我不知道如何谷歌它。
如果您使用 AngularJS 从 JSON 格式的 API 中获取“人员”列表,并将其转换为 JS 数组/对象:
[
{firstName: 'Foo', lastName: 'Bar'},
{firstName: 'Banana', lastName: 'Fruit'}
]
并且您需要一些将名字和姓氏连接到 fullName 中的通用函数。
那么通常认为使用解决方案 1 或 2 更好吗?
解决方案 1 数组由对象组成,这些对象本身具有所需的所有方法。
[
{firstName: 'Foo', lastName: 'Bar', fullName: function(){return this.firstName+' '+this.lastName;}},
{firstName: 'Banana', lastName: 'Fruit', fullName: function(){return this.firstName+' '+this.lastName;}}
]
我认为这是最 OOP 的解决方案,但在 Javascript(和长列表)的情况下也是最佳解决方案?
解决方案 2 制作仅实例化一次的辅助函数。
var helper = function(person)
{
return person.firstName+' '+person.lastName;
}
我知道这是非常基本的,但有时这是正确的最佳方法;)
最佳答案
在您的第一个解决方案中,您要为每个对象添加一个函数,这感觉很麻烦,如果您有很多对象并且迭代其他对象,我认为这不是最好的。
第二个更轻。
另一个想法:
也许您可以将您的 JSON 解析为特定对象,如下所示:
Parse JSON String into a Particular Object Prototype in JavaScript
然后使用原型(prototype)
Foo.prototype.fullname = function (){
return this.firstName+' '+this.lastName;
}
因此每个 Foo 对象都可以通过原型(prototype)调用 fullname()(在内存中只调用一次,而不是在每个对象中)。
关于Javascript/Angular : Bind function to every object or make helper object?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27999600/