什么是创建JavaScript类的最佳方式,以便通过传入对象文字来创建对象,同时保持类中设置的默认值。使用对象文字和默认值创建JavaScript类的最佳方法
var brett = new Person({
name: 'Brett'
,age: 21
//gender: 'male' //The default is female, so brett.gender will be female
});
什么是创建JavaScript类的最佳方式,以便通过传入对象文字来创建对象,同时保持类中设置的默认值。使用对象文字和默认值创建JavaScript类的最佳方法
var brett = new Person({
name: 'Brett'
,age: 21
//gender: 'male' //The default is female, so brett.gender will be female
});
你也可以使用jQuery的$.extend()
可能通过定义构造函数,像这样:
function Person(props) {
this.name = props.name;
this.age = props.age;
this.gender = props.gender || 'female';
}
...但如果你曾经想传递一个假十岁上下的性别(如''
,0
,false
,null
或undefined
)默认值仍将被使用。如果这是一个问题,你可以这样做:
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];
}
}
你可以做一个浅克隆:
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()(显然它更加复杂)。
谢谢!我不知道这存在。无论如何,我使用jquery,所以这将是非常有用的。 – Brett 2010-09-09 00:11:18