207 lines
4.4 KiB
Markdown
207 lines
4.4 KiB
Markdown
![]() |
---
|
|||
|
id: a2f1d72d9b908d0bd72bb9f6
|
|||
|
title: Створіть об'єкт Людина
|
|||
|
challengeType: 5
|
|||
|
forumTopicId: 16020
|
|||
|
dashedName: make-a-person
|
|||
|
---
|
|||
|
|
|||
|
# --description--
|
|||
|
|
|||
|
Заповніть конструктор об’єкта методами, наведеними нижче:
|
|||
|
|
|||
|
```js
|
|||
|
getFirstName()
|
|||
|
getLastName()
|
|||
|
getFullName()
|
|||
|
setFirstName(first)
|
|||
|
setLastName(last)
|
|||
|
setFullName(firstAndLast)
|
|||
|
```
|
|||
|
|
|||
|
Запустіть тести, щоб побачити очікуваний результат для кожного методу. Методи, що приймають аргумент, повинні приймати лише один аргумент і це має бути рядок. Ці методи повинні бути єдиними доступними засобами для взаємодії з об'єктом.
|
|||
|
|
|||
|
# --hints--
|
|||
|
|
|||
|
Не треба додавати жодних властивостей. `Object.keys(bob).length` повинен завжди повертатися як 6.
|
|||
|
|
|||
|
```js
|
|||
|
assert.strictEqual(
|
|||
|
Object.keys((function () {
|
|||
|
let bob = new Person('Bob Ross');
|
|||
|
bob.setFirstName('Haskell');
|
|||
|
bob.setLastName('Curry');
|
|||
|
bob.setFullName('John Smith');
|
|||
|
return bob;
|
|||
|
})()).length,
|
|||
|
6
|
|||
|
);
|
|||
|
```
|
|||
|
|
|||
|
`bob instanceof Person` повинен повертатися як `true`.
|
|||
|
|
|||
|
```js
|
|||
|
assert.deepEqual(bob instanceof Person, true);
|
|||
|
```
|
|||
|
|
|||
|
`bob.firstName` повинен повертатися як `undefined`.
|
|||
|
|
|||
|
```js
|
|||
|
assert.deepEqual(bob.firstName, undefined);
|
|||
|
```
|
|||
|
|
|||
|
`bob.lastName` повинен повертатися як `undefined`.
|
|||
|
|
|||
|
```js
|
|||
|
assert.deepEqual(bob.lastName, undefined);
|
|||
|
```
|
|||
|
|
|||
|
`bob.getFirstName()` повинен повертати рядок `Bob`.
|
|||
|
|
|||
|
```js
|
|||
|
assert.deepEqual(bob.getFirstName(), 'Bob');
|
|||
|
```
|
|||
|
|
|||
|
`bob.getLastName()` повинен повертати рядок `Ross`.
|
|||
|
|
|||
|
```js
|
|||
|
assert.deepEqual(bob.getLastName(), 'Ross');
|
|||
|
```
|
|||
|
|
|||
|
`bob.getFullName()` повинен повертати рядок `Bob Ross`.
|
|||
|
|
|||
|
```js
|
|||
|
assert.deepEqual(bob.getFullName(), 'Bob Ross');
|
|||
|
```
|
|||
|
|
|||
|
`bob.getFullName()` повинен повертати рядок `Haskell Ross` після `bob.setFirstName("Haskell")`.
|
|||
|
|
|||
|
```js
|
|||
|
assert.strictEqual(
|
|||
|
(function () {
|
|||
|
bob.setFirstName('Haskell');
|
|||
|
return bob.getFullName();
|
|||
|
})(),
|
|||
|
'Haskell Ross'
|
|||
|
);
|
|||
|
```
|
|||
|
|
|||
|
`bob.getFullName()` повинен повертати рядок `Haskell Curry` після `bob.setLastName("Curry")`.
|
|||
|
|
|||
|
```js
|
|||
|
assert.strictEqual(
|
|||
|
(function () {
|
|||
|
var _bob = new Person('Haskell Ross');
|
|||
|
_bob.setLastName('Curry');
|
|||
|
return _bob.getFullName();
|
|||
|
})(),
|
|||
|
'Haskell Curry'
|
|||
|
);
|
|||
|
```
|
|||
|
|
|||
|
`bob.getFullName()` повинен повертати рядок `Haskell Curry` після `bob.setFullName("Haskell Curry")`.
|
|||
|
|
|||
|
```js
|
|||
|
assert.strictEqual(
|
|||
|
(function () {
|
|||
|
bob.setFullName('Haskell Curry');
|
|||
|
return bob.getFullName();
|
|||
|
})(),
|
|||
|
'Haskell Curry'
|
|||
|
);
|
|||
|
```
|
|||
|
|
|||
|
`bob.getFirstName()` повинен повертати рядок `Haskell` після `bob.setFullName("Haskell Curry")`.
|
|||
|
|
|||
|
```js
|
|||
|
assert.strictEqual(
|
|||
|
(function () {
|
|||
|
bob.setFullName('Haskell Curry');
|
|||
|
return bob.getFirstName();
|
|||
|
})(),
|
|||
|
'Haskell'
|
|||
|
);
|
|||
|
```
|
|||
|
|
|||
|
`bob.getLastName()` повинен повертати рядок `Curry` після `bob.setFullName("Haskell Curry")`.
|
|||
|
|
|||
|
```js
|
|||
|
assert.strictEqual(
|
|||
|
(function () {
|
|||
|
bob.setFullName('Haskell Curry');
|
|||
|
return bob.getLastName();
|
|||
|
})(),
|
|||
|
'Curry'
|
|||
|
);
|
|||
|
```
|
|||
|
|
|||
|
# --seed--
|
|||
|
|
|||
|
## --after-user-code--
|
|||
|
|
|||
|
```js
|
|||
|
if(bob){
|
|||
|
bob = new Person("Bob Ross");
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
## --seed-contents--
|
|||
|
|
|||
|
```js
|
|||
|
const Person = function(firstAndLast) {
|
|||
|
// Only change code below this line
|
|||
|
// Complete the method below and implement the others similarly
|
|||
|
this.getFullName = function() {
|
|||
|
return "";
|
|||
|
};
|
|||
|
return firstAndLast;
|
|||
|
};
|
|||
|
|
|||
|
const bob = new Person('Bob Ross');
|
|||
|
bob.getFullName();
|
|||
|
```
|
|||
|
|
|||
|
# --solutions--
|
|||
|
|
|||
|
```js
|
|||
|
const Person = function(firstAndLast) {
|
|||
|
|
|||
|
let firstName, lastName;
|
|||
|
|
|||
|
function updateName(str) {
|
|||
|
firstName = str.split(" ")[0];
|
|||
|
lastName = str.split(" ")[1];
|
|||
|
}
|
|||
|
|
|||
|
updateName(firstAndLast);
|
|||
|
|
|||
|
this.getFirstName = function(){
|
|||
|
return firstName;
|
|||
|
};
|
|||
|
|
|||
|
this.getLastName = function(){
|
|||
|
return lastName;
|
|||
|
};
|
|||
|
|
|||
|
this.getFullName = function(){
|
|||
|
return firstName + " " + lastName;
|
|||
|
};
|
|||
|
|
|||
|
this.setFirstName = function(str){
|
|||
|
firstName = str;
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
this.setLastName = function(str){
|
|||
|
lastName = str;
|
|||
|
};
|
|||
|
|
|||
|
this.setFullName = function(str){
|
|||
|
updateName(str);
|
|||
|
};
|
|||
|
};
|
|||
|
|
|||
|
const bob = new Person('Bob Ross');
|
|||
|
bob.getFullName();
|
|||
|
```
|