javascript - 有条件地向 JavaScript 对象添加属性

标签 javascript jquery oop

是否有更简洁或可读性更强的方法?

var foo={a:111,c:333, somePropertyThatShouldntBeAdded:'xxx'};
var myobj={x:1,y:2,z:3};
if(foo.a){myobj.a=foo.a;}
if(foo.b){myobj.b=foo.b;}
if(foo.c){myobj.c=foo.c;}

编辑。我这样做的原因如下。

var obj={value:this.text,css:{color:'#929292',margin:'1px 0px'}};
if(this.width){obj.css.width=this.width;}
if(this.type){obj.type=this.type;}
if(this.id){obj.id=this.id;}
var input=$('<input/>',obj)

最佳答案

您可以使用简单的基于循环的方法:

var foo={a:111,c:333, somePropertyThatShouldntBeAdded:'xxx'};
var myobj={x:1,y:2,z:3};

['a','b','c'].forEach(function(key) {
    if(key in foo) {
        myobj[key] = foo[key];
    }
});

请注意我是如何使用 in 关键字的。如果属性的值为(例如)false0,您当前的解决方案将不起作用。

此外,为了获得更好的解决方案,请提供一些背景信息:为什么要有条件地复制属性?也许您可以从一开始就避免这种情况。

关于javascript - 有条件地向 JavaScript 对象添加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29867846/

相关文章:

javascript - 使用类而不是 ID 发布 ajax 数据

javascript - 将清除和加载图标添加到 twitter typeahead.js 输入

oop - 如何动态生成用于特征的值?

oop - 为什么 OOP 中的类有一个选项可以标记为从不继承自祖先?

javascript - 如果当前时间大于且小于特定时间,如何调用函数

javascript - JS 中 return 后方括号的含义 - fn(){return{}[]}

javascript - 单击按钮后重新加载数据表

javascript - 如何防止 guest 用户为一个帖子投票两次?

javascript - CSS禁用属性不禁用按钮

java - Java中如何在多个实现类中使用双接口(interface)?