zoukankan      html  css  js  c++  java
  • 模块模式——属性到方法理解过度

    // 自执行匿名函数的值保存在变量prison里面
    var prison = (function () {
      var prisoner_name = 'WangMing',
          jail_term = '20 year term';
    
      // 自执行匿名函数返回了一个对象,对象上的属性正是我们想要的
      return {
        prisoner: prisoner_name + ' - ' + jail_term,
        sentence: jail_term
      };
    })();
    
    // prison.prisoner_name未定义,因为它不是自执行匿名函数返回对象上的属性
    console.log( prison.prisoner_name );
    // prison.jail_term为undefined,因为它不是自执行匿名函数返回的对象上的属性
    // outputs undefined
    console.log( prison.jail_term );
    // prison是一个对象所以仍然可以在它上面定义jail_term属性...
    prison.jail_term = 'Sentence commuted';
    // ...但是prison.prisoner仍然是不会被更新的
    console.log( prison.jail_term );
    // this outputs 'WangMing - 20 year term'
    console.log(prison.prisoner);
    // this outputs '20 year term'
    console.log(prison.sentence);
    
    
    
    /*
      prison.prisoner没被更新,这有几个原因。
      1. jail_term 不是prison对象或者原型上的属性,它是执行环境中创建的对象变量,prison变量保存了这个变量,并且执行环境已不复存在,因为函数已经执行结束。
      2. 这些属性只在匿名函数执行时设置了一次,永远不会被更新。为了能更新它们,我们必须把属性转变为方法,每次调用它们时都会访问变量。
    
    
    */
    
  • 相关阅读:
    经典多线程问题(四)-轮流打印字母和数字
    经典多线程问题 (一)-多线程售票
    买卖股票的最佳时机 II
    最长递增(严格递增)子序列-可以不连续
    环形链表 II
    最小栈
    买卖股票的最佳时机
    二叉树的层序遍历
    字符串相加
    最大子序和
  • 原文地址:https://www.cnblogs.com/nodejsxxh/p/4423224.html
Copyright © 2011-2022 走看看