关于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 相关文章推荐
一些常用的JS功能函数代码
Jun 23 Javascript
Extjs学习笔记之二 初识Extjs之Form
Jan 07 Javascript
jquery实现的超出屏幕时把固定层变为定位层的代码
Feb 23 Javascript
ExtJS Store的数据访问与更新问题
Apr 28 Javascript
jquery 实现表单验证功能代码(简洁)
Jul 03 Javascript
Jquery利用mouseenter和mouseleave实现鼠标经过弹出层且可以点击
Feb 12 Javascript
node.js中的fs.rename方法使用说明
Dec 16 Javascript
js实现动态加载脚本的方法实例汇总
Nov 02 Javascript
JavaScript实现的Tween算法及缓冲特效实例代码
Nov 03 Javascript
实例讲解jquery与json的结合
Jan 07 Javascript
深入浅析Bootstrap列表组组件
May 03 Javascript
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
Jan 08 Vue.js
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字符串截取问题
2006/11/28 PHP
深入解析PHP垃圾回收机制对内存泄露的处理
2013/06/14 PHP
PHP使用递归方式列出当前目录下所有文件的方法
2015/06/02 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
2015/10/19 PHP
Laravel中任务调度console使用方法小结
2017/05/07 PHP
WHOOPS PHP调试库的使用
2017/09/29 PHP
php 多个变量指向同一个引用($b = &amp;$a)用法分析
2019/11/13 PHP
用Javascript数组处理多个字符串的连接问题
2009/08/20 Javascript
使用jquery实现图文切换效果另加特效
2013/01/20 Javascript
Jquery实现显示和隐藏的4种简单方式
2013/08/28 Javascript
浅析JQuery中的html(),text(),val()区别
2014/09/01 Javascript
javascript实现当前页导航激活的方法
2015/02/27 Javascript
Javascript函数的参数
2015/07/16 Javascript
jQuery实现大转盘抽奖活动仿QQ音乐代码分享
2015/08/21 Javascript
JS基于Ajax实现的网页Loading效果代码
2015/10/27 Javascript
jQuery滚动新闻实现代码
2016/06/26 Javascript
Javascript 调用 ActionScript 的简单方法
2016/09/22 Javascript
微信小程序中做用户登录与登录态维护的实现详解
2017/05/17 Javascript
Ionic3实现图片瀑布流布局
2017/08/09 Javascript
Vue渲染函数详解
2017/09/15 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
2019/05/23 Javascript
Vue父组件如何获取子组件中的变量
2019/07/24 Javascript
[54:25]Ti4 循环赛第三日LGD vs MOUZ
2014/07/12 DOTA
[01:25]2015国际邀请赛最佳短片奖——斧王《拆塔英雄:天赋异禀》
2015/09/22 DOTA
Python操作Word批量生成文章的方法
2015/07/28 Python
Python编程之微信推送模板消息功能示例
2017/08/21 Python
python 叠加等边三角形的绘制的实现
2019/08/14 Python
使用python实现kNN分类算法
2019/10/16 Python
python删除文件、清空目录的实现方法
2020/09/23 Python
Python调用飞书发送消息的示例
2020/11/10 Python
国际旅客访问北美最大的汽车租赁提供商:Alamo Rent A Car
2018/06/13 全球购物
浙大网新C/C++面试解惑
2015/05/27 面试题
求职信模板
2014/05/23 职场文书
承诺函格式模板
2015/01/21 职场文书
司机岗位职责范本
2015/04/10 职场文书
职工趣味运动会开幕词
2016/03/04 职场文书