我的教练在评论中告诉我,这里有大量参数,他的意思是什么?
function Product(id, name, cost, quantity, shortDescription, fullDescription) {
this.id = id;
this.name = name;
this.cost = cost;
this.quantity = quantity;
this.shortDescription = shortDescription;
this.fullDescription = fullDescription;
}
答案 0 :(得分:2)
您的id
,name
,cost
,quantity
,shortDescription
和fullDescription
是参数(你会经常听到他们被称为{#1;}论证" 1 )到Product
函数。他说六个太多了。这是一种风格和维护问题,意见可能会有所不同,但这就是他所说的。
您可以考虑使用单个options
参数:
function Product(options) {
this.id = options.id;
this.name = options.name;
this.cost = options.cost;
this.quantity = options.quantity;
this.shortDescription = options.shortDescription;
this.fullDescription = options.fullDescription;
}
...您可以通过传入包含这些属性的对象来调用它,如下所示:
var p = new Person({
id: 42,
name: "Douglas Adams",
cost: "Priceless",
quantity: 0,
shortDescription: "Great author",
fullDescription: "Mostly harmless"
});
在ES2015及更高版本中,您可以使用解构参数执行此操作:
function Product({id, name, cost, quantity, shortDescription, fullDescription}) {
// Note -----^-----------------------------------------------------------^
this.id = id;
this.name = name;
this.cost = cost;
this.quantity = quantity;
this.shortDescription = shortDescription;
this.fullDescription = fullDescription;
}
您仍然以相同的方式调用,并使用对象:
let p = new Person({
id: 42,
name: "Douglas Adams",
cost: "Priceless",
quantity: 0,
shortDescription: "Great author",
fullDescription: "Mostly harmless"
});
再次:那是ES2015及以上版本。
1 参数与参数:在声明中,技术上正确的术语是"参数。"在调用中,术语是"参数"。例如,这是一个采用name
参数的函数:
function foo(name) {
// ...
}
...在这里我们用参数" Douglas"来调用它:
foo("Douglas");
在日常演讲中,谈论" name
论证"是绝对可以的。不进行参数/参数区分。但这就是区别:声明中的抽象事物与呼叫中的具体事物。