2016-03-11 4 views
-3

сделать уникальные объекты, передавая параметры в конструкторе:сделать уникальные объекты, передавая параметры в конструкторе

Конструктор мы имеем большой, но что, если мы не всегда хотим, чтобы создать один и тот же объект?

Чтобы решить эту проблему, мы можем добавить параметры к нашему конструктору. Мы делаем это, как в следующем примере:

var Car = function(wheels, seats, engines) { 
    this.wheels = wheels; 
    this.seats = seats; 
    this.engines = engines; 
}; 

Теперь мы можем передать аргументы, когда будем называть наш конструктор.

var myCar = new Car(6, 3, 1); 

Этот код создает объект, который использует аргументы, мы прошли в и выглядит как:

{ 
    wheels: 6, 
    seats: 3, 
    engines: 1 
} 

Теперь дайте ему попробовать себя! Измените значение Car constructor, чтобы использовать parameters для присвоения значений свойствам wheels, seats, and engines.

Затем вызовите свой новый constructor с тремя аргументами числа и назначьте его myCar, чтобы увидеть его в действии.


Пожалуйста, заполните приведенную ниже код:

var Car = function() { 
    //Change this constructor 
    this.wheels = 4; 
    this.seats = 1; 
    this.engines = 1; 
}; 

//Try it out here 
var myCar; 

Инструкции:

  • Calling new Car(3,1,2) должен производить объект с wheels свойство 3, A seats свойство 1, и свойство engines 2.

  • Вызов new Car(4,4,2) должен производить объект со свойством wheels
    4, в seats свойство 4, и свойство engines 2.

  • Вызов new Car(2,6,3) должен производить объект со свойством wheels
    2, в seats свойством 6, и engines свойства 3.

  • myCar должны иметь числовые значения для wheels, seats, and engines
    свойств.


Моя попытка:

var Car = function() { 
    //Change this constructor 
    this.wheels = 4; 
    this.seats = 1; 
    this.engines = 1; 
}; 

//Try it out here 
var myCar = function(wheels, seats, engines) { 
    this.wheels = wheels; 
    this.seats = seats; 
    this.engines = engines; 
}; 
var myCar = new Car(6, 3, 1); 
+0

Я хочу заполнить код согласно данным инструкциям. ссылка http://www.freecodecamp.com/challenges/make-unique-objects-by-passing-parameters-to-our-constructor#?solution=var%20Car%20%3D%20function()%20%7B% 0A% 20% 20% 2F% 2FChange% 20this% 20constructor% 0A% 20% 20% 20this.wheels% 3D% 204% 3B% 0A% 20% 20% 20this.seats% 3D% 201% 3B% 0A% 20% 20this.engines% 20% 3D% 201% 3B% 0A% 7D% 3B% 0A% 0A% 2F% 2FTry% 20it% 20out% 20here% 0Avar% 20myCar% 3B% 0A –

+0

Ваши инструкции соответствуют вашему первому фрагменту кода. Поэтому, пожалуйста, покажите нам, что команда не работает, когда вы используете первый конструктор «Car». – tenbits

+0

Do yo want 'new Car (3,1,2)' всегда возвращать ссылку на тот же ** объект? – tenbits

ответ

1

Coding вызов ответа на ссылку вы добавили будет:

var Car = function(wheels, seats, engines) { 
if(isNaN(wheels)) 
    wheels = 0; 
if(isNaN(seats)) 
    seats = 0; 
if(isNaN(engines)) 
    engines = 0; 
    this.wheels = wheels; 
    this.seats = seats; 
    this.engines = engines; 
}; 
//Try it out here 
var myCar = new Car(2,6,3); 
myCar = new Car(3,1,2); 
myCar = new Car(4,4,2); 

Запуск тестов после добавления этого кода. - все пройдет

+0

Да, он также работает. Спасибо за решение. –

1

Вы ответили уже себя:

var Car = function(wheels, seats, engines) { 
    //additional checks 
    if(isNaN(wheels)) 
     wheels = 0; 
    if(isNaN(seats)) 
     seats = 0; 
    if(isNaN(engines)) 
     engines = 0; 
    this.wheels = wheels; 
    this.seats = seats; 
    this.engines = engines; 
}; 

//Try it out here 
var myCar = new Car(3,1,2); 
console.dir(myCar); 

myCar = new Car(4,4,2); 
console.dir(myCar); 

myCar = new Car(2,6,3); 
console.dir(myCar); 
+0

Да, все сделано. Спасибо за решение. –

Смежные вопросы