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> |