--- id: 587d7dae367417b2b2512b79 title: Extend Constructors to Receive Arguments challengeType: 1 videoUrl: '' localeTitle: Расширить конструкторы для получения аргументов --- ## Description
Конструкторы Bird and Dog из последней задачи хорошо работали. Однако обратите внимание, что все Birds , созданные с помощью конструктора Bird , автоматически называются Albert, имеют синий цвет и имеют две ноги. Что делать, если вы хотите, чтобы птицы с разными значениями имели название и цвет? Можно изменить свойства каждой птицы вручную, но это будет много работы:
пусть лебедь = новая птица ();
swan.name = "Carlos";
swan.color = "white";
Предположим, вы писали программу, чтобы отслеживать сотни или даже тысячи разных птиц во вольерах. Это займет много времени, чтобы создать всех птиц, а затем изменить свойства на разные значения для каждого. Чтобы легче создать разные объекты Bird , вы можете сконструировать конструктор Bird для принятия параметров:
функция Птица (имя, цвет) {
this.name = name;
this.color = color;
this.numLegs = 2;
}
Затем передайте значения в качестве аргументов, чтобы определить каждую уникальную птицу в конструкторе Bird : let cardinal = new Bird("Bruce", "red"); Это дает новый экземпляр Bird с именем и цветовыми свойствами, установленными на Bruce и red, соответственно. Свойство numLegs по-прежнему установлено numLegs 2. cardinal обладает следующими свойствами:
cardinal.name // => Брюс
cardinal.color // => красный
cardinal.numLegs // => 2
Конструктор более гибкий. Теперь можно определить свойства для каждой Bird в момент ее создания, что является одним из способов использования JavaScript-конструкторов. Они группируют объекты вместе на основе общих характеристик и поведения и определяют план, который автоматизирует их создание.
## Instructions
Создайте еще один конструктор Dog . На этот раз настройте его, чтобы взять name и color , а также свойство numLegs установленное в 4. Затем создайте новую Dog сохраненную в переменной terrier . Передайте две строки в качестве аргументов для свойств name и color .
## Tests
```yml tests: - text: Dog должна получить аргумент для name . testString: 'assert((new Dog("Clifford")).name === "Clifford", "Dog should receive an argument for name.");' - text: Dog должна получить аргумент для color . testString: 'assert((new Dog("Clifford", "yellow")).color === "yellow", "Dog should receive an argument for color.");' - text: Dog должно быть свойство numLegs установленное на 4. testString: 'assert((new Dog("Clifford")).numLegs === 4, "Dog should have property numLegs set to 4.");' - text: terrier должен быть создан с использованием конструктора Dog . testString: 'assert(terrier instanceof Dog, "terrier should be created using the Dog constructor.");' ```
## Challenge Seed
```js function Dog() { } ```
## Solution
```js // solution required ```