关于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 parsefloat parseint 转换函数
Jan 21 Javascript
Ext 今日学习总结
Sep 19 Javascript
设置iframe的document.designMode后仅Firefox中其body.innerHTML为br
Feb 27 Javascript
javascript中sort()的用法实例分析
Jan 30 Javascript
js实现n秒倒计时后才可以点击的效果
Dec 20 Javascript
理解js对象继承的N种模式
Jan 25 Javascript
javascript实现表单验证
Jan 29 Javascript
浅谈ES6新增的数组方法和对象
Aug 08 Javascript
ndm:NPM的桌面GUI应用程序
Oct 15 Javascript
vue + typescript + video.js实现 流媒体播放 视频监控功能
Jul 07 Javascript
深入了解Hybrid App技术的相关知识
Jul 17 Javascript
JavaScript数组去重实现方法小结
Jan 17 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
不用GD库生成当前时间的PNG格式图象的程序
2006/10/09 PHP
mysql 的 like 问题,超强毕杀记!!!
2007/01/18 PHP
PHP中使用CURL伪造来路抓取页面或文件
2011/05/04 PHP
PHP 获取远程网页内容的代码(fopen,curl已测)
2011/06/06 PHP
深入php函数file_get_contents超时处理的方法详解
2013/06/03 PHP
php计算程序运行时间的简单例子分享
2014/05/10 PHP
PHP实现图片压缩的两则实例
2014/07/19 PHP
php判断linux下程序问题实例
2015/07/09 PHP
php强大的时间转换函数strtotime
2016/02/18 PHP
laravel 模型查询按照whereIn排序的示例
2019/10/16 PHP
判断页面是关闭还是刷新的js代码
2007/01/28 Javascript
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
2007/02/05 Javascript
基于Jquery的开发个代阴影的对话框效果代码
2011/07/28 Javascript
控制页面按钮在后台执行期间不重复提交的JS方法
2013/06/24 Javascript
JS:window.onload的使用介绍
2013/11/13 Javascript
jquery任意位置浮动固定层插件用法实例
2015/05/29 Javascript
关于JavaScript的变量的数据类型的判断方法
2015/08/14 Javascript
easyui window refresh 刷新两次的解决方法(推荐)
2016/05/18 Javascript
js手动播放图片实现图片轮播效果
2016/09/17 Javascript
Vuejs 组件——props数据传递的实例代码
2017/03/07 Javascript
基于jquery实现二级联动效果
2017/03/30 jQuery
详解webpack 配合babel 将es6转成es5 超简单实例
2017/05/02 Javascript
Vue2.0 实现移动端图片上传功能
2018/05/30 Javascript
30分钟用Node.js构建一个API服务器的步骤详解
2019/05/24 Javascript
TypeScript魔法堂之枚举的超实用手册
2020/10/29 Javascript
[43:24]VG vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python监控网站运行异常并发送邮件的方法
2015/03/13 Python
以windows service方式运行Python程序的方法
2015/06/03 Python
django将图片上传数据库后在前端显式的方法
2018/05/25 Python
python实现整数的二进制循环移位
2019/03/08 Python
Python Pandas分组聚合的实现方法
2019/07/02 Python
Python爬取豆瓣视频信息代码实例
2019/11/16 Python
python 实现在shell窗口中编写print不向屏幕输出
2020/02/19 Python
python实现测试工具(二)——简单的ui测试工具
2020/10/19 Python
雏鹰争章活动总结
2014/05/09 职场文书
拿破仑传读书笔记
2015/07/01 职场文书