Javascript/Angular : Bind function to every object or make helper object?

标签 javascript angularjs function oop

只是一个快速的想法,我不知道如何谷歌它。

如果您使用 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)调用 f​​ullname()(在内存中只调用一次,而不是在每个对象中)。

关于Javascript/Angular : Bind function to every object or make helper object?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27999600/

相关文章:

c - C中静态函数的优先级

c - 无法将 float 传递给另一个函数?

javascript - mouseenter 更改 anchor 内的 HTML 后 mouseleave 未触发

javascript - Promise 回调的触发顺序是什么?

javascript - 为什么这是无限循环? (javascript)

javascript - 如何检测angularjs中的水平滚动事件?

javascript - Angular ui 树在 mozilla 中不起作用

angularjs - 一起使用 AngularJS ng-bind 和 ng-href?

javascript - 当未包装在匿名函数中时,属性的行为有所不同

javascript - 获取 Url 字符串参数作为 JSON 对象