如果属性不存在,则使用默认值进行扩展

时间:2014-02-06 13:07:19

标签: jquery

我有一个对象

myObject = {
    fontFamily : 'Tahoma',
    fontSize: '12',
    color : '000000'
}

默认选项

myDefaults = {
    fontFamily : 'Tahoma',
    fontSize: '15',
    color : 'FF0000',
    weight : 'bold',
    decoration : 'underline'
}

现在我想将它们与jQuery.extend()合并。

我的合并规则是:如果myObject中未定义属性,请使用myDefaults的属性。 我的意思是,在myDefaults的帮助下填空。

我尝试使用$.extend。但我遇到意想不到的结果。现在我很困惑。这是$.extend无法完成的事情吗?

我的预期结果是:

myObject = {
    fontFamily : 'Tahoma',
    fontSize: '12',
    color : '000000',
    weight : 'bold',
    decoration : 'underline'
}

谢谢。

2 个答案:

答案 0 :(得分:1)

single quote尝试此问题后,underline出现问题,

myDefaults = {
    fontFamily : 'Tahoma',
    fontSize: '15',
    color : 'FF0000',
    weight : 'bold',
    decoration : 'underline'
    //// you missed -------^
}
myObject = {
    fontFamily : 'Tahoma',
    fontSize: '12',
    color : '000000'
}
myObject=$.extend({},myDefaults,myObject);
console.log(myObject);

Demo

答案 1 :(得分:0)

使用$.extend()之类的

myDefaults = {
    fontFamily: 'Tahoma',
    fontSize: '15',
    color: 'FF0000',
    weight: 'bold',
    decoration: 'underline'
}

myObject = {
    fontFamily: 'Tahoma',
    fontSize: '12',
    color: '000000'
}

myObject = $.extend({}, myDefaults, myObject)

演示:Fiddle