2010-09-08 39 views

回答

2

你也可以使用jQuery的$.extend()

+0

谢谢!我不知道这存在。无论如何,我使用jquery,所以这将是非常有用的。 – Brett 2010-09-09 00:11:18

3

可能通过定义构造函数,像这样:

function Person(props) { 
    this.name = props.name; 
    this.age = props.age; 
    this.gender = props.gender || 'female'; 
} 

...但如果你曾经想传递一个假十岁上下的性别(如''0falsenullundefined)默认值仍将被使用。如果这是一个问题,你可以这样做:

function Person(props) { 
    // expected properties 
    this.name = props.name; 
    this.age = props.age; 

    // optional properties 
    var defaults = { 
     gender: 'female' 
     // etc 
    }; 
    for (var k in defaults) { 
     this[k] = props.hasOwnProperty(k) ? props[k] : defaults[k]; 
    } 
} 
1

你可以做一个浅克隆:

function shallow_clone(target, source) { 
    for (var i in source) { 
     if (typeof target[i] == "undefined") { 
      target[i] = source[i]; 
     } 
    } 
}; 

然后:

function Person(opts) { 
    var defaults = { gender: 'male' }; 

    shallow_clone(this, opts); 
    shallow_clone(this, defaults); 
    .... 
}; 

如果你需要你的选择更深入的副本,你可以创建一个deep_clone()(显然它更加复杂)。

相关问题