鉴于产品可能具有多个属性,例如名称,价格,sku,描述等等,以下内容对于描述产品模型将会非常冗长...
function Product(data) {
var productData = data || {};
Object.defineProperty(this, "sku", {
get: function() {
return productData.sku;
}
});
Object.defineProperty(this, "name", {
get: function() {
return productData.name;
}
});
Object.defineProperty(this, "price", {
get: function() {
return productData.price;
}
});
}
module.exports = Product;
javascript中有哪些替代方案,这通常如何处理?
答案 0 :(得分:2)
您可以使用单个循环来定义所有属性:
var self = this;
Object.keys(productData).forEach(function(prop){
Object.defineProperty(self, prop, {
get: function() {
return productData[prop];
}
});
});
答案 1 :(得分:1)
Pointy相当值得点Object.defineProperties -
function Product(data) {
var productData = data || {};
Object.defineProperties(this,
"sku": {
get: function() {
return productData.sku;
}
},
"name": {
get: function() {
return productData.name;
}
},
"price", {
get: function() {
return productData.price;
}
});
}
module.exports = Product;
支持与Object.defineProperty几乎相同,因此没有理由不在同时定义多个属性的情况下使用此方法。