源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

关于JavaScript中name的意义冲突示例介绍

  • 时间:2022-12-08 04:27 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:关于JavaScript中name的意义冲突示例介绍
在昨天的《Javascript权威指南》学习笔记之十:ECMAScript 5 增强的对象模型一文中,对于一段代码的调试出现了一个奇怪现象,现将源代码贴在下面:
[u]复制代码[/u] 代码如下:
<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中运行结果: http://img.blog.csdn.net/20140529073008296?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTA0Mzg0Mw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center 这个结果是正确的,但是,改一个地方,结果就不同了
[u]复制代码[/u] 代码如下:
<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>
运行结果: [img]http://files.jb51.net/file_images/article/201405/201405291449142.gif?2014429144927[/img]   这是为什么呢?就只是改了一个简单的变量名啊 问题出在了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)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部