JS中name的意义冲突示例介绍 - Javascript权威指南

分类:Javascript| 发布:佚名| 查看: | 发表时间:2014/5/30

《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中运行结果:
upload/2014/5/201405301331017024.gif?2014429144927" alt="" > 
这是为什么呢?就只是改了一个简单的变量名啊

问题出在了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的值的类型。

365据说看到好文章不转的人,服务器容易宕机
原创文章如转载,请注明:转载自郑州网建-前端开发 http://camnpr.com/
本文链接:http://camnpr.com/javascript/1149.html