首页 > 编程语言 > 详细

关于JavaScript中name的意义冲突

时间:2014-06-05 07:06:43      阅读:339      评论:0      收藏:0      [点我收藏+]

    在昨天的《Javascript权威指南》学习笔记之十:ECMAScript 5 增强的对象模型一文中,对于一段代码的调试出现了一个奇怪现象,现将源代码贴在下面:

<script type="text/javascript">
		function Person(){}
        var per = new Person;
		Object.defineProperties(per,
		{
			"nickName":
			{
				value:"Tom",
				writable:true
			},
			"age":
	   		{
	   			value:20,
	   			configurable:false,
	   			writable:false
	   		}
		});

		var o = Object.getOwnPropertyDescriptor(per,"nickName");
		alert(JSON.stringify(o));
	</script>

Google中运行结果:

bubuko.com,布布扣

这个结果是正确的,但是,改一个地方,结果就不同了

	<script type="text/javascript">
		function Person(){}
        var per = new Person;
		Object.defineProperties(per,
		{
			"nickName":
			{
				value:"Tom",
				writable:true
			},
			"age":
	   		{
	   			value:20,
	   			configurable:false,
	   			writable:false
	   		}
		});

		var name = Object.getOwnPropertyDescriptor(per,"nickName");
		alert(JSON.stringify(name));
	</script>

运行结果:

bubuko.com,布布扣

这是为什么呢?就只是改了一个简单的变量名啊

问题出在了name身上,但是本人出入JS,不懂,在网上找了资料也没有结果,后面就去请教了一个师兄,也把问题放在了论坛上:http://bbs.csdn.net/topics/390799744?page=1#post-397474060,


name是window属性,作用是设置或返回窗口的名字,数据类型是字符串。因为第一句是function Person(){},已经结束了,所以下面的代码可能在全局context中,也就是说你以为alert(JSON.stringify(name));是输出的上面的var name,但实际上可能输出的是window.name。至于输出[Object object],这个类型是name的值的类型。


关于JavaScript中name的意义冲突,布布扣,bubuko.com

关于JavaScript中name的意义冲突

原文:http://blog.csdn.net/u011043843/article/details/27478687

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!