用下面给定的方法构造一个对象.
方法有 getFirstName(), getLastName(), getFullName(), setFirstName(first), setLastName(last), and setFullName(firstAndLast).
所有有参数的方法只接受一个字符串参数.
所有的方法只与实体对象交互.
当你遇到困难的时候,记得查看错误提示、阅读文档、搜索、提问。
这是一些对你有帮助的资源:
Object.keys(bob).length
应该返回 6.
bob instanceof Person
应该返回 true.
bob.firstName
应该返回 undefined.
bob.lastName
应该返回 undefined.
bob.getFirstName()
应该返回 "Bob".
bob.getLastName()
应该返回 "Ross".
bob.getFullName()
应该返回 "Bob Ross".
bob.getFullName()
应该返回 "Haskell Ross" after
bob.setFirstName("Haskell")
.
bob.getFullName()
应该返回 "Haskell Curry" after
bob.setLastName("Curry")
.
bob.getFullName()
应该返回 "Haskell Curry" 在
bob.setFullName("Haskell Curry")
之后.
bob.getFirstName()
应该返回 "Haskell" 在
bob.setFullName("Haskell Curry")
之后.
bob.getLastName()
应该返回 "Curry" 在
bob.setFullName("Haskell Curry")
之后.
var Person = function(firstAndLast) { var fullName = firstAndLast; var arr = fullName.split(" "); var first = arr[0]; var last = arr[1]; this.getFirstName = function(){ return arr[0]; }; this.getLastName = function(){ return arr[1]; }; this.getFullName = function(){ return fullName; }; this.setFirstName = function(firstName){ fullName = firstName + " " + last; }; this.setLastName = function(lastName){ fullName = first+" "+lastName; }; this.setFullName = function(full){ fullName = full; arr = fullName.split(" "); first = arr[0]; last = arr[1]; }; }; var bob = new Person('Bob Ross'); bob.getFirstName();
学习自
var makeCounter = function() { var privateCounter = 0; function changeBy(val) { privateCounter += val; } return { increment: function() { changeBy(1); }, decrement: function() { changeBy(-1); }, value: function() { return privateCounter; } } }; var Counter1 = makeCounter(); var Counter2 = makeCounter(); console.log(Counter1.value()); /* logs 0 */ Counter1.increment(); Counter1.increment(); console.log(Counter1.value()); /* logs 2 */ Counter1.decrement(); console.log(Counter1.value()); /* logs 1 */ console.log(Counter2.value()); /* logs 0 */
两个计数器 counter1
和 counter2
各自的独立。每个闭包都是引用自己词法作用域内的变量 privateCounter
。