我有这个对象:
var A = {
headers: {
'a property' : 'a value'
}
};
我如何创建这样的另一个对象?
我不想输入整个父对象?我的新对象应该包含父对象,所以当我console.log
var A,B和C时,它应该产生不同的结果。
var B = {
headers: {
'a property' : 'a value',
'b property' : 'b value'
}
};
var C = {
headers: {
'a property' : 'a value',
'b property' : 'b value'
},
other: {
other2: {
'other2 property' : 'other2 property'
}
}
};
答案 0 :(得分:2)
您可以使用创建功能:
var B = Object.create(A);
B.headers['b property'] = 'b value';
var C = Object.create(B);
C.others = {
other2: {
'other2 property' : 'other2 property'
}
}
答案 1 :(得分:0)
如果您的问题是使用B
中已有的值扩展对象A
,则可以使用javascript对象方法Object.assign
执行以下操作:
var A = {
headers: {
'a property' : 'a value'
}
};
var B = Object.assign(A);
B.headers['b property'] = 'b value';
这会将源对象的内容(A.headers
)复制到B.headers
,如下所示:
{
headers: {
'a property' : 'a value',
'b property' : 'b value'
}
};
答案 2 :(得分:0)
我总是在我的项目中使用Simple JavaScript Inheritance by John Resig。它是继承的简单而优雅的解决方案。
通过使用上述解决方案,您可以按如下方式定义类。您需要做的就是扩展课程。
var Person = Class.extend({
init: function(isDancing) {
this.dancing = isDancing;
}
});
var Ninja = Person.extend({
init: function() {
this._super(false); // => Overrides the superior constructor
}
});
var p = new Person(true);
p.dancing; // => true
var n = new Ninja();
n.dancing; // => false
它也很有用,因为所有类都将有一个init方法,因此您将知道在哪里引导事物,以及如何正确地覆盖事物。