4.7 KiB
4.7 KiB
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();