Я читаю эту книгу, и, конечно, с помощью конструктора было бы лучше при создании большего количества объектов, и мне было сказано меньше вводить текст, но затем до конца главы он дает еще один вариант для создания объекта, который на самом деле требует много ввода текста и заставляет меня чувствовать, что просто делает объект литералом по-другому.Этот способ создать объект действительно лучше? (javascript)
Давайте предположим, что объект автомобиля, например:
function Car(make, model, year, color, passengers, convertible, mileage){
this.make = make;
this.model = model;
this.year = year;
this.color = color;
this.passengers = passengers;
this.convertible = convertible;
this.mileage = mileage;
this.started = false;
this.start = function(){
this.started = true;
};
this.stop = function(){
this.started = false;
};
this.drive = function(){
if(this.started){
console.log(this.make + " " + this.model + " goes zoom zoom!");
}else{
console.log("Start the engine first.");
}
}
}
Создание нового автомобиля объектов
var chevy = new Car("Chevy", "Bel Air", 1957, "red", 2, false, 1021);
var cadi = new Car("GM", "Cadillac", 1955, "tan", 5, false, 12892);
var taxi = new Car("Webville Motors", "Taxi", 1955, "yellow", 4, false, 281341);
var fiat = new Car("Fiat", "500", 1957, "Medium Blue", 2, false, 88000);
var testCar = new Car("Webville Motors", "Test Car", 2014, "marine", 2, true, 21)
я могу понять все выше, но то, что книга предложила лучше и другой способ, который требует большего набора хранит эти параметры в другую переменную и меняет конструктор следующим образом:
function Car(params){
this.make = params.make;
this.model = params.model;
this.year = params.year;
this.color = params.color;
this.passengers = params.passengers;
this.convertible = params.convertible;
this.mileage = params.mileage;
this.started = false;
this.start = function(){
this.started = true;
};
this.stop = function(){
this.started = false;
};
this.drive = function(){
if(this.started){
console.log(this.make + " " + this.model + " goes zoom zoom!");
}else{
console.log("Start the engine first.");
}
}
}
var chevyParam = {
make: "Chevy",
model: "Bel Air",
year: 1957,
color: "red",
passengers: 2,
convertible: false,
mileage: 1021
}
var chevy = new Car(chevyParam);
Как я понимаю, что происходит, и как это работает, но второе - действительно намного лучше и опрятно, чем первое? Я знаю, что второй не нужно заботиться о том, чтобы ввести параметры в неправильном порядке, но гораздо больше работ
проще изменить объект, чем изменять параметры и аргументы, и убедиться, что все они в правильном порядке – charlietfl
«Лучше в глаза разработчику» (c) – raina77ow