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 。

  • 相关阅读:
    ScheduledExecutorService改为一次性延时任务
    layer弹框倒计时结束后执行
    pom.xml如何使用本地库的jar-jar包上传到远程库-jar包安装到本地库
    Windows+WinRAR 压缩后备份文件夹
    java DES加密
    JAVA RSA加密公私钥
    Microsoft 语音服务异常 java.lang.UnsatisfiedLinkError: com.micros oft.cognitiveservices.speech.internal.carbon_javaJNI.swig_module_init()
    Java 线程池
    jsp页面导入excel文件的步骤及配置
    正则表达式校验时间格式(2018-01-02)
  • 原文地址:https://www.cnblogs.com/leina-2017-09-01/p/10648953.html
Copyright © 2011-2022 走看看