码迷,mamicode.com
首页 > 其他好文 > 详细

模块模式——属性到方法理解过度

时间:2015-04-13 22:31:34      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:

// 自执行匿名函数的值保存在变量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. 这些属性只在匿名函数执行时设置了一次,永远不会被更新。为了能更新它们,我们必须把属性转变为方法,每次调用它们时都会访问变量。


*/

 

模块模式——属性到方法理解过度

标签:

原文地址:http://www.cnblogs.com/nodejsxxh/p/4423224.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!