js预解析案例

这里写自定义目录标题


function Foo() {
getName = function() {
alert(1);
};
return this;
}
Foo.getName = function() {
alert(2);
};
Foo.prototype.getName = function() {
alert(3);
};

		var getName = function() {
			alert(4);
		};

		function getName() {
			alert(5);
		}
		
		/*
		 以上js预解析步骤:
		function Foo() {
			getName = function() {
				alert(1);
			};
			return this;
		}
		
		遇到
		var getName = function() {
			alert(4);
		};
		结果1为:
		function Foo() {
			getName = function() {
				alert(1);
			};
			return this;
		}
		var getName
		
		剩下 getName = function() { alert(4); }; 
		
		结果1遇到
		function getName() {
			alert(5);
		}
		
		结果2为:
		function Foo() {
			getName = function() {
				alert(1);
			};
			return this;
		}
		
		var getName
		
		function getName() {
			alert(5);
		}
		 
		预解析完后开始执行:
		
		结果2执行就遇到 剩下的  getName = function() { alert(4); };
		此时:
		function getName() {
			alert(5);
		}
		重新赋值 getName = function() { alert(4); };
		
		结果3 代码为 :
		
		function Foo() {
	      getName = function () { alert(1); };
	      return this;
	    }
	   	var getName;
	    Foo.getName = function () { alert(2); };
	    Foo.prototype.getName = function () { alert(3); };
	    getName = function () { alert(4); };
		
		*/

		Foo.getName(); 			//  2
		getName();				//  4
		Foo().getName();		//  1
		getName();				//  1
		new Foo.getName()		//	2
		new(Foo.getName)();		//	2
		new Foo().getName();	//	3
		(new Foo()).getName();	//	3
		new new Foo().getName()	//	3

转载自 https://www.cnblogs.com/yaya-003/p/12887535.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值