试试这个:
var Egg = function(details) {
this.details = {};
for (var key in details) {
this.details[key] = details[key];
}
return this;
};
var egg = new Egg({ status: 'burnt' }); // burnt
console.log(egg.details.status);
问题是您将参数(details
)传递给构造函数,但没有正确使用它们。在我的示例中,我将默认设置details
为空对象{}
,然后覆盖其上传递的任何属性。
您可以通过使用原型更进一步。假设您想公开一个可以让您更改细节的函数。
var Egg = function(details) {
this.details = {};
for (var key in details) {
this.details[key] = details[key];
}
return this;
};
Egg.prototype.updateDetail = function(name, value) {
this.details[name] = value;
};
var egg = new Egg({ status: 'burnt' });
console.log(egg.details.status); // burnt
egg.updateDetail('status', 'scrambled');
console.log(egg.details.status); // scrambled