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