关于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 相关文章推荐
javascript div 遮罩层封锁整个页面
Jul 10 Javascript
javascript 时间比较实现代码
Oct 28 Javascript
node.js中的fs.realpathSync方法使用说明
Dec 16 Javascript
7个有用的jQuery代码片段分享
May 19 Javascript
JS正则截取两个字符串之间及字符串前后内容的方法
Jan 06 Javascript
详解webpack分离css单独打包
Jun 21 Javascript
js学习总结之DOM2兼容处理this问题的解决方法
Jul 27 Javascript
vue单页面在微信下只能分享落地页的解决方案
Apr 15 Javascript
vuex根据不同的用户权限展示不同的路由列表功能
Sep 20 Javascript
原生JS无缝滑动轮播图
Oct 22 Javascript
js实现贪吃蛇游戏 canvas绘制地图
Sep 09 Javascript
详解JavaScript执行模型
Nov 16 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
php cli换行示例
2014/04/22 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
ECMAScript 创建自己的js类库
2012/11/22 Javascript
仿谷歌主页js动画效果实现代码
2013/07/14 Javascript
js将字符串转成正则表达式的实现方法
2013/11/13 Javascript
js怎么判断flash swf文件是否加载完毕
2014/08/14 Javascript
jQuery使用animate创建动画用法实例
2015/08/07 Javascript
jquery解析XML及获取XML节点名称的实现代码
2016/05/18 Javascript
Mongoose学习全面理解(推荐)
2017/01/21 Javascript
原生js实现旋转木马轮播图效果
2017/02/27 Javascript
NodeJS爬虫实例之糗事百科
2017/12/14 NodeJs
JavaScript比较同一天的时间大小实例代码
2018/02/09 Javascript
基于rollup的组件库打包体积优化小结
2018/06/18 Javascript
p5.js码绘“跳动的小正方形”的实现代码
2019/10/22 Javascript
2019最新21个MySQL高频面试题介绍
2020/02/06 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
2020/08/14 Javascript
解决vue项目axios每次请求session不一致的问题
2020/10/24 Javascript
[47:42]完美世界DOTA2联赛PWL S2 GXR vs Ink 第一场 11.19
2020/11/20 DOTA
python 实现A*算法的示例代码
2018/08/13 Python
Python selenium页面加载慢超时的解决方案
2020/03/18 Python
Python面向对象程序设计之继承、多态原理与用法详解
2020/03/23 Python
什么是Python变量作用域
2020/06/03 Python
Python自动巡检H3C交换机实现过程解析
2020/08/14 Python
详解CSS3原生支持div铺满浏览器的方法
2018/08/30 HTML / CSS
Under Armour安德玛英国官网:美国高端运动科技品牌
2018/09/17 全球购物
澳大利亚领先的男装零售连锁店:Lowes
2020/08/07 全球购物
开办大学饮食联盟创业计划书
2014/01/29 职场文书
高中学生干部学习的自我评价
2014/02/21 职场文书
协议书与合同的区别
2014/04/18 职场文书
大学生创业计划书怎么写
2014/09/15 职场文书
四风批评与自我批评范文
2014/10/14 职场文书
三八红旗手事迹材料
2014/12/26 职场文书
幼儿园小班开学寄语
2015/05/27 职场文书
vue使用element-ui按需引入
2022/05/20 Vue.js
MySQL中dd::columns表结构转table过程及应用详解
2022/09/23 MySQL