我有一个对象,比如“汽车”:
function car(name, speed, options){
this.name = name;
this.speed = speed;
this.options = options;
}
会有多个“选项”,所以我想把它传递给一个数组:
var carMustang = new car("Mustang", 250, ["Cruise Control","Air Conditioning", "ABS"]);
这不起作用,因为将数组传递给函数需要以不同的方式完成,就像我一直在阅读的那样。
但我真正的问题是:这是构建这些对象的有效方法吗?如果你必须将多个属性传递给一个对象,并且会有很多对象,你会怎么做呢?
奖励:如果您可以通过将数组信息传递给对象构造函数来解决我的问题,我将永远感激不尽。
由于
答案 0 :(得分:0)
class Car {
constructor(_name, _speed, _options){
this.name = _name;
this.speed = _speed;
this.options = _options;
}
addToOptions (newOption) {
this.options.push(newOption);
}
}
var car = new Car('mustang', 250, [1, 2, '3']);
console.log(car);
car.addToOptions('AC');
console.log(car);
答案 1 :(得分:0)
如果您有很多选项,可以考虑创建某种对象来存储它们,然后将该对象作为参数传递。该对象可能只有每个可能选项的属性,然后将它们设置为true或false,以确定此车是否具有该选项。 就数组的传递而言,考虑到当数组通过函数时,它会衰减到指向该数组的指针。这意味着如果您将其作为参数传递,然后稍后在函数外部更改该数组的值,它也将更改函数中的值。
答案 2 :(得分:0)
在es6中,您可以模拟命名参数。如果你愿意,可以默认它们。当它的3个论点真的没关系。我的观点是它的许多论点。您通过它们的顺序与此方法无关。如果你想传递可选参数,那么当参数的顺序无关紧要时,它会更容易。我认为这是一个干净的方式。至少是es6的方式。
function Car({ name, speed = 50, options }){
this.name = name;
this.speed = speed;
this.options = options;
}
const car = new Car({ speed: 100, name: 'Volvo' });
//Car { name: 'Volvo', speed: 100, options: undefined }
console.log(car)
Pre es6
function Car(config){
this.name = config.name;
this.speed = config.speed || 50;
this.options = config.options;
}
const car = new Car({ speed: 100, name: 'Volvo' });
//Car { name: 'Volvo', speed: 100, options: undefined }
console.log(car)
假设您希望d和e在下面的函数中是可选的。然后你需要将它们放在最后或传递null / undefined / whatever_you_prefer
function Car(a, b, c, d, e) {
}