关于JavaScript中name的意义冲突
来源:互联网 发布:天刀周杰伦捏脸数据 编辑:程序博客网 时间:2024/06/16 12:07
在昨天的《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中运行结果:
这个结果是正确的,但是,改一个地方,结果就不同了
<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>
运行结果:
这是为什么呢?就只是改了一个简单的变量名啊
问题出在了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的值的类型。
0 0
- 关于JavaScript中name的意义冲突
- padans中Serise.name的用法意义
- javascript中属性的意义
- javascript中this的意义
- javascript中CDATA的意义
- 关于JavaScript中apply与call的用法意义及区别
- 关于JavaScript中apply与call的用法意义及区别
- 关于JavaScript中apply与call的用法意义及区别(转)
- 关于JavaScript中apply与call的用法意义及区别
- 关于JavaScript中apply与call的用法意义及区别
- 关于JavaScript中apply与call的用法意义及区别
- 关于JavaScript中apply与call的用法意义及区别
- 关于JavaScript中apply与call的用法意义及区别
- 关于JavaScript中apply与call的用法意义及区别
- 关于JavaScript中apply与call的用法意义及区别(转)
- [乐意黎原创] 关于JavaScript中apply与call的用法意义及区别
- 关于JavaScript中apply与call的用法意义及区别
- 关于JavaScript中apply与call的用法意义及区别
- Java中Runnable和Thread的区别
- HTTP无状态协议和session原理
- 在ARM汇编中如何区分LDR是指令还是伪指令
- 立体类族共有的抽象类
- sleep和wait的区别
- 关于JavaScript中name的意义冲突
- android AIDL
- android WebView
- android 常用命令(未完成)
- android 抽屉类SlidingDrawer(未完成)
- android 自定义View
- android LayoutInflater(未完成)
- android MenuInflater的使用(未完成)
- android PopupWindow(未完成)