关于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 04 Javascript
js取两个数组的交集|差集|并集|补集|去重示例代码
Aug 07 Javascript
Javascript delete 引用类型对象
Nov 01 Javascript
jquery如何把数组变为字符串传到服务端并处理
Apr 30 Javascript
Jquery设置attr的disabled属性控制某行显示或者隐藏
Sep 25 Javascript
jQuery验证插件validation使用指南
Apr 21 Javascript
理解和运用JavaScript的闭包机制
Aug 13 Javascript
浅谈JS之tagNaem和nodeName
Sep 13 Javascript
基于原生js淡入淡出函数封装(兼容IE)
Oct 20 Javascript
vue-cli项目修改文件热重载失效的解决方法
Sep 19 Javascript
解决layui 表单元素radio不显示渲染的问题
Sep 04 Javascript
原生js实现拖拽移动与缩放效果
Aug 24 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
利用Memcached在php下实现session机制 替换PHP的原生session支持
2010/08/21 PHP
组合算法的PHP解答方法
2012/02/04 PHP
thinkphp模板输出技巧汇总
2014/11/24 PHP
PHP实现大数(浮点数)取余的方法
2017/02/18 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
2007/12/23 Javascript
csdn 博客中实现运行代码功能实现
2009/08/29 Javascript
javascript中substr,substring,slice.splice的区别说明
2010/11/25 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
2015/09/15 Javascript
学习JavaScript正则表达式
2015/11/13 Javascript
深入理解JavaScript中的call、apply、bind方法的区别
2016/05/30 Javascript
JavaScript必知必会(十) call apply bind的用法说明
2016/06/08 Javascript
jquery的checkbox,radio,select等方法小结
2016/08/30 Javascript
JS中双击和单击事件冲突的解决方法
2018/04/09 Javascript
React学习笔记之高阶组件应用
2018/06/02 Javascript
详解vue.js根据不同环境(正式、测试)打包到不同目录
2018/07/13 Javascript
解决在vue项目中webpack打包后字体不生效的问题
2018/09/01 Javascript
基于Vue 服务端Cookies删除的问题
2018/09/21 Javascript
Vue项目部署在Spring Boot出现页面空白问题的解决方案
2018/11/26 Javascript
Webpack中SplitChunksPlugin 配置参数详解
2020/03/24 Javascript
js String.prototype.trim字符去前后空格的扩展
2020/08/23 Javascript
python3爬虫之设计签名小程序
2018/06/19 Python
Python 常用模块 re 使用方法详解
2019/06/06 Python
python频繁写入文件时提速的方法
2019/06/26 Python
Python实现Mysql数据统计及numpy统计函数
2019/07/15 Python
python打印异常信息的两种实现方式
2019/12/24 Python
Python 防止死锁的方法
2020/07/29 Python
python 获取字典键值对的实现
2020/11/12 Python
CSS3 实现侧边栏展开收起动画
2014/12/22 HTML / CSS
Ruby如何进行文件操作
2014/07/17 面试题
有多年工作经验的自我评价
2014/03/02 职场文书
高三复习计划
2015/01/19 职场文书
sql server删除前1000行数据的方法实例
2021/08/30 SQL Server
golang操作rocketmq的示例代码
2022/04/06 Golang
Python的property属性详细讲解
2022/04/11 Python