var prison = (function(){ var prisoner_name = ‘WangMing‘, jail_term = ‘20 year term‘; // 返回一个有两个方法的对象 return { // 每次调用prisoner()时,会重新查找prisoner_name和jail_term prisoner: function () { return prisoner_name + ‘-‘ + jail_term; }, // 每次调用setJailTerm时,会查找并设置jail_term setJailTerm: function ( term ) { jail_term = term; } }; })(); // this outputs ‘WangMing-20 year term‘ console.log( prison.prisoner() ); prison.setJailTerm( ‘Sentence commuted‘ ); // this now outputs ‘WangMing-Sentence commuted‘ console.log( prison.prisoner() ); /* 尽管自执行匿名函数完成了执行,方法prisoner和setJailTerm仍然可以访问变量变量prisoner_name和jail_term。prisoner_name和jail_term像是prison对象的私有变量。它们只能通过匿名函数返回的对象上的方法来访问,不能在该对象或者原型上直接访问。 */
时间: 2024-10-12 21:16:19