zoukankan      html  css  js  c++  java
  • Make a Person 闭包

    用下面给定的方法构造一个对象.

    方法有 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 。

  • 相关阅读:
    屏蔽浏览器的脚本错误提示
    服务器定时重启计划任务
    卖程序的小女孩(转)
    会话状态已创建一个会话 ID,但由于响应已被应用程序刷新而无法保存它。
    Sesion空框架跳到登陆js
    poj 1679 The Unique MST (次小生成树 模版)
    hdu 3488 Tour (km 二分图 最小权)
    sdut 2401 最大矩形面积
    poj 3422 Kaka's Matrix Travels (最大费用流(最小费用最大流)+++拆点)
    博弈论 简介
  • 原文地址:https://www.cnblogs.com/leina-2017-09-01/p/10648953.html
Copyright © 2011-2022 走看看