从新属性的属性更新对象的属性,但仅当新对象的属性未定义时才更新

时间:2016-03-15 20:16:50

标签: javascript object properties coffeescript

任何人都知道从一个新属性的属性更新对象属性的好方法,但只有在新对象的那些未定义时才这样做? 我能做到这一点(coffeescript):

setProfileData = (data) ->
      _profile.talent_id = if data.id then data.id else _profile.talent_id

      _profile.is_talent = if data.is_talent then data.is_talent else _profile.is_talent

      _profile.is_employer = if data.is_employer then data.is_employer else _profile.is_employer

但似乎有点长了。

data实际上是一个类(一个函数),所以_.extend实际上不是一个选项。

2 个答案:

答案 0 :(得分:2)

没有JavaScript或CoffeeScript运算符执行此类分配。但是,您可以通过

避免至少一次重复
if data.id then _profile.talent_id = data.id

_profile.talent_id = data.id || _profile.talent_id

您也可以使用existential operator(真正检查undefined)而不仅仅是虚假。

  

data实际上是一个类(一个函数),所以_.extend实际上不是一个选项。

extend也适用于函数对象。所以,如果你已经使用了下划线或lodash,你肯定应该这样做。

答案 1 :(得分:0)

它可能是这样的

for (var key in object_from) {
    if (data.hasOwnProperty(key)) {
       object_to[key] = object_from[key];
    }
}

期待帮助

相关问题