| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | --- | 
					
						
							|  |  |  | id: a2f1d72d9b908d0bd72bb9f6 | 
					
						
							| 
									
										
										
										
											2021-03-15 14:01:16 -06:00
										 |  |  | title: 创建一个人员对象 | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | challengeType: 5 | 
					
						
							| 
									
										
										
										
											2020-09-07 16:10:29 +08:00
										 |  |  | forumTopicId: 16020 | 
					
						
							| 
									
										
										
										
											2021-01-13 03:31:00 +01:00
										 |  |  | dashedName: make-a-person | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | --- | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | # --description--
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-14 21:20:39 -06:00
										 |  |  | 用以下方法填充对象构造函数: | 
					
						
							| 
									
										
										
										
											2020-09-07 16:10:29 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | getFirstName() | 
					
						
							|  |  |  | getLastName() | 
					
						
							|  |  |  | getFullName() | 
					
						
							|  |  |  | setFirstName(first) | 
					
						
							|  |  |  | setLastName(last) | 
					
						
							|  |  |  | setFullName(firstAndLast) | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-14 21:20:39 -06:00
										 |  |  | 运行测试以查看每个方法的预期输出。 方法接收一个参数,因此必须要有一个参数,并且其类型应该为字符串。 这些方法必须是与对象交互的唯一可用方法。 | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | # --hints--
 | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-14 21:20:39 -06:00
										 |  |  | `Object.keys(bob).length` 应返回 6。 | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | ```js | 
					
						
							|  |  |  | assert.deepEqual(Object.keys(bob).length, 6); | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-14 21:20:39 -06:00
										 |  |  | `bob instanceof Person` 应返回 `true`。 | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | assert.deepEqual(bob instanceof Person, true); | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-14 21:20:39 -06:00
										 |  |  | `bob.firstName` 应该返回 `undefined`。 | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | assert.deepEqual(bob.firstName, undefined); | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-14 21:20:39 -06:00
										 |  |  | `bob.lastName` 应该返回 `undefined`。 | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | ```js | 
					
						
							|  |  |  | assert.deepEqual(bob.lastName, undefined); | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-14 21:20:39 -06:00
										 |  |  | `bob.getFirstName()` 应该返回字符串 `Bob`. | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | ```js | 
					
						
							|  |  |  | assert.deepEqual(bob.getFirstName(), 'Bob'); | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-14 21:20:39 -06:00
										 |  |  | `bob.getLastName()` 应该返回字符串 `Ross`. | 
					
						
							| 
									
										
										
										
											2020-09-07 16:10:29 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | ```js | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | assert.deepEqual(bob.getLastName(), 'Ross'); | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2020-09-07 16:10:29 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-14 21:20:39 -06:00
										 |  |  | `bob.getFullName()` 应该返回字符串 `Bob Ross`. | 
					
						
							| 
									
										
										
										
											2020-09-07 16:10:29 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | ```js | 
					
						
							|  |  |  | assert.deepEqual(bob.getFullName(), 'Bob Ross'); | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2020-09-07 16:10:29 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-14 21:20:39 -06:00
										 |  |  | `bob.getFullName()` 应该在 `bob.setFirstName("Haskell")` 之后返回字符串 `Haskell Ross`。 | 
					
						
							| 
									
										
										
										
											2020-09-07 16:10:29 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | ```js | 
					
						
							|  |  |  | assert.strictEqual( | 
					
						
							|  |  |  |   (function () { | 
					
						
							|  |  |  |     bob.setFirstName('Haskell'); | 
					
						
							|  |  |  |     return bob.getFullName(); | 
					
						
							|  |  |  |   })(), | 
					
						
							|  |  |  |   'Haskell Ross' | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2020-09-07 16:10:29 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-14 21:20:39 -06:00
										 |  |  | `bob.getFullName()` 应该在 `bob.setLastName("Curry")` 之后返回字符串 `Haskell Curry`。 | 
					
						
							| 
									
										
										
										
											2020-09-07 16:10:29 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | ```js | 
					
						
							|  |  |  | assert.strictEqual( | 
					
						
							|  |  |  |   (function () { | 
					
						
							|  |  |  |     var _bob = new Person('Haskell Ross'); | 
					
						
							|  |  |  |     _bob.setLastName('Curry'); | 
					
						
							|  |  |  |     return _bob.getFullName(); | 
					
						
							|  |  |  |   })(), | 
					
						
							|  |  |  |   'Haskell Curry' | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2020-09-07 16:10:29 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-14 21:20:39 -06:00
										 |  |  | `bob.getFullName()` 应该返回字符串 `Haskell Curry` 之后的 `bob.setFullName("Haskell Curry")`。 | 
					
						
							| 
									
										
										
										
											2020-09-07 16:10:29 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | ```js | 
					
						
							|  |  |  | assert.strictEqual( | 
					
						
							|  |  |  |   (function () { | 
					
						
							|  |  |  |     bob.setFullName('Haskell Curry'); | 
					
						
							|  |  |  |     return bob.getFullName(); | 
					
						
							|  |  |  |   })(), | 
					
						
							|  |  |  |   'Haskell Curry' | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-14 21:20:39 -06:00
										 |  |  | `bob.getFirstName()` 应该返回字符串 `Haskell` 之后的 `bob.setFullName("Haskell Curry")`。 | 
					
						
							| 
									
										
										
										
											2020-09-07 16:10:29 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | ```js | 
					
						
							|  |  |  | assert.strictEqual( | 
					
						
							|  |  |  |   (function () { | 
					
						
							|  |  |  |     bob.setFullName('Haskell Curry'); | 
					
						
							|  |  |  |     return bob.getFirstName(); | 
					
						
							|  |  |  |   })(), | 
					
						
							|  |  |  |   'Haskell' | 
					
						
							|  |  |  | ); | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2020-09-07 16:10:29 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-14 21:20:39 -06:00
										 |  |  | `bob.getLastName()` 应该返回字符串 `Curry` 之后 `bob.setFullName("Haskell Curry")`。 | 
					
						
							| 
									
										
										
										
											2020-09-07 16:10:29 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | ```js | 
					
						
							|  |  |  | assert.strictEqual( | 
					
						
							|  |  |  |   (function () { | 
					
						
							|  |  |  |     bob.setFullName('Haskell Curry'); | 
					
						
							|  |  |  |     return bob.getLastName(); | 
					
						
							|  |  |  |   })(), | 
					
						
							|  |  |  |   'Curry' | 
					
						
							|  |  |  | ); | 
					
						
							| 
									
										
										
										
											2018-10-10 18:03:03 -04:00
										 |  |  | ``` | 
					
						
							| 
									
										
										
										
											2020-08-13 17:24:35 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-13 03:31:00 +01:00
										 |  |  | # --seed--
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## --after-user-code--
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | if(bob){ | 
					
						
							|  |  |  |   bob = new Person("Bob Ross"); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## --seed-contents--
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | var Person = function(firstAndLast) { | 
					
						
							|  |  |  |   // Only change code below this line | 
					
						
							|  |  |  |   // Complete the method below and implement the others similarly | 
					
						
							|  |  |  |   this.getFullName = function() { | 
					
						
							|  |  |  |     return ""; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  |   return firstAndLast; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var bob = new Person('Bob Ross'); | 
					
						
							|  |  |  | bob.getFullName(); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-16 00:37:30 -07:00
										 |  |  | # --solutions--
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-13 03:31:00 +01:00
										 |  |  | ```js | 
					
						
							|  |  |  | var Person = function(firstAndLast) { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   var 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); | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var bob = new Person('Bob Ross'); | 
					
						
							|  |  |  | bob.getFullName(); | 
					
						
							|  |  |  | ``` |