任何人都知道从一个新属性的属性更新对象属性的好方法,但只有在新对象的那些未定义时才这样做? 我能做到这一点(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实际上不是一个选项。
答案 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];
}
}
期待帮助