关于instance初始化执行次数问题

关于instance初始化执行次数问题

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>传统的单例模式</title>
	</head>
	<body>
		<script type="text/javascript">
			function Minister(name){
				this.name=name;
			}
			Minister.prototype.say=function(){
				console.log(this.name+':大王,冤枉啊!');
			}
			
			function Emperor(){
				this.name="大王";
				this.id=Math.random();
			}
			
    		Emperor.getInstance=(function(){
    			var instance=null;
    			return function(){
	    			if(!instance){
	    				instance=new Emperor();
	    			}
	    			return instance;
    			};
    			
    		})();
    		
    		var Emperor=(function(){
    			var instance=null;
    			function Emperor(){
    				if(instance){
    					return instance;
    				}
    				this.name="皇帝";
    				this.id=Math.random();
    				return instance = this;
    			}
    			Emperor.prototype.say=function(){
					console.log(this.name+this.id+':滚~~~~~');
				}
    			return Emperor;
    		})();
    		
    		
    		
			var minister1=new Minister('张三');
			var emperor1=new Emperor();
			var minister2=new Minister('李四');
			var emperor2=new Emperor();
			var minister3=new Minister('王麻子');
			var emperor3=new Emperor();
			
			minister1.say();
			emperor1.say();
			minister2.say();
			emperor2.say();
			minister3.say();
			emperor3.say();
		</script>
	</body>
</html>

在这之中有三次实例化Emperor,请问老师,每次实例化Emperor时,不会执行var instance = null;这串代码么?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕夭夭 2018-10-07 10:45:49

不会哦 ,代码如下

http://img1.sycdn.imooc.com//climg/5bb9729f00017cf406280411.jpg

代码最外层使用立即执行函数 ,代码会自动执行 ,所以变量Emperor等于号后面代码执行并返回了里面的函数Emperor ,所以每次实例化的是里面的Emperor 。由于var instance = null;在函数Emperor 外面 如下:

http://img1.sycdn.imooc.com//climg/5bb9730d00015fa604590137.jpg

所以每次实例化时不会执行var instance = null 。

祝学习愉快 !望采纳

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师