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


Posted in Javascript onMay 29, 2014

在昨天的《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中运行结果:
http://img.blog.csdn.net/20140529073008296?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTA0Mzg0Mw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
这个结果是正确的,但是,改一个地方,结果就不同了
<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>

运行结果:
关于JavaScript中name的意义冲突示例介绍 
这是为什么呢?就只是改了一个简单的变量名啊

问题出在了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 相关文章推荐
jQuery EasyUI API 中文文档 - ProgressBar 进度条
Sep 29 Javascript
DWR实现模拟Google搜索效果实现原理及代码
Jan 30 Javascript
SeaJS入门教程系列之SeaJS介绍(一)
Mar 03 Javascript
jquery实现带二级菜单的导航示例
Apr 28 Javascript
vue增删改查的简单操作
Jul 15 Javascript
AngularJS select加载数据选中默认值的方法
Feb 28 Javascript
深入理解JavaScript和TypeScript中的class
Apr 22 Javascript
js刷新页面location.reload()用法详解
Dec 09 Javascript
js实现贪吃蛇游戏 canvas绘制地图
Sep 09 Javascript
基于element-ui对话框el-dialog初始化的校验问题解决
Sep 11 Javascript
基于react项目打包css引用路径错误解决方案
Oct 28 Javascript
给原生html中添加水印遮罩层的实现示例
Apr 02 Javascript
window.open()详解及浏览器兼容性问题示例探讨
May 29 #Javascript
javaScript年份下拉列表框内容为当前年份及前后50年
May 28 #Javascript
href下载文件根据id取url并下载
May 28 #Javascript
javascript自定义的addClass()方法
May 28 #Javascript
使用insertAfter()方法在现有元素后添加一个新元素
May 28 #Javascript
用html+css+js实现的一个简单的图片切换特效
May 28 #Javascript
HTML页面登录时的JS验证方法
May 28 #Javascript
You might like
Zerg兵种介绍
2020/03/14 星际争霸
PHP 读取文件的正确方法
2009/04/29 PHP
防止本地用户用fsockopen DDOS攻击对策
2011/11/02 PHP
PHP获取youku视频真实flv文件地址的方法
2014/12/23 PHP
thinkphp框架下404页面设置 仅三步
2016/05/14 PHP
PHP的mysqli_stat()函数讲解
2019/01/23 PHP
YII框架行为behaviors用法示例
2019/04/26 PHP
php fread函数使用方法总结
2019/05/28 PHP
extjs 列表框(multiselect)的动态添加列表项的方法
2009/07/31 Javascript
JavaScript 异步调用框架 (Part 6 - 实例 &amp; 模式)
2009/08/04 Javascript
js/jQuery对象互转(快速操作dom元素)
2013/02/04 Javascript
关于JavaScript中的关联数组分析
2013/04/09 Javascript
jquery 滚动条事件简单实例
2013/07/12 Javascript
模拟jQuery中的ready方法及实现按需加载css,js实例代码
2013/09/27 Javascript
js获取html页面节点方法(递归方式)
2013/12/13 Javascript
node.js实现BigPipe详解
2014/12/05 Javascript
使用AOP改善javascript代码
2015/05/01 Javascript
AngularJS 指令的交互详解及实例代码
2016/09/14 Javascript
Input文本框随着输入内容多少自动延伸的实现
2017/02/15 Javascript
ES6下React组件的写法示例代码
2017/05/04 Javascript
简单谈谈关于 npm 5.0 的新坑
2017/06/08 Javascript
通过button将form表单的数据提交到action层的实例
2017/09/08 Javascript
javascript自定义事件功能与用法实例分析
2017/11/08 Javascript
详解vue-cli项目中的proxyTable跨域问题小结
2018/02/09 Javascript
React如何实现浏览器打印部分内容详析
2019/05/19 Javascript
Ant Design Pro 之 ProTable使用操作
2020/10/31 Javascript
利用Python代码实现数据可视化的5种方法详解
2018/03/25 Python
pandas.DataFrame 根据条件新建列并赋值的方法
2018/04/08 Python
浅谈Python中的bs4基础
2018/10/21 Python
Python格式化输出字符串方法小结【%与format】
2018/10/29 Python
使用CodeMirror实现Python3在线编辑器的示例代码
2019/01/14 Python
tensorflow 实现自定义layer并添加到计算图中
2020/02/04 Python
详解torch.Tensor的4种乘法
2020/09/03 Python
Haglöfs瑞典官方网站:haglofs火柴棍,欧洲顶级户外品牌
2018/10/18 全球购物
《美丽的小兴安岭》教学反思
2014/02/26 职场文书
分享CSS盒子模型隐藏的几种方式
2022/02/28 HTML / CSS