4.7 KiB
Raw Blame History

id, title, challengeType, forumTopicId, localeTitle
id title challengeType forumTopicId localeTitle
587d7dae367417b2b2512b79 Extend Constructors to Receive Arguments 1 18235 Расширить конструкторы для получения аргументов

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

tests:
  - text: <code>Dog</code> should receive an argument for <code>name</code>.
    testString: assert((new Dog('Clifford')).name === 'Clifford');
  - text: <code>Dog</code> should receive an argument for <code>color</code>.
    testString: assert((new Dog('Clifford', 'yellow')).color === 'yellow');
  - text: <code>Dog</code> should have property <code>numLegs</code> set to 4.
    testString: assert((new Dog('Clifford')).numLegs === 4);
  - text: <code>terrier</code> should be created using the <code>Dog</code> constructor.
    testString: assert(terrier instanceof Dog);

Challenge Seed

function Dog() {

}

Solution

function Dog (name, color) {
  this.numLegs = 4;
  this.name = name;
  this.color = color;
}

const terrier = new Dog();