关于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实现 在光标处插入指定内容
May 25 Javascript
Javascript优化技巧(文件瘦身篇)
Jan 28 Javascript
jQuery EasyUI API 中文文档 - ComboBox组合框
Oct 07 Javascript
基于JQuery模仿苹果桌面的Dock效果(初级版)
Oct 15 Javascript
js判断选择的时间是否大于今天的代码
Aug 20 Javascript
完美实现bootstrap分页查询
Dec 09 Javascript
jQuery中的通配符选择器使用总结
May 30 Javascript
浅谈JavaScript异步编程
Jan 20 Javascript
Bootstrap栅格系统简单实现代码
Mar 06 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
Mar 16 Javascript
angularjs $http调用接口的方式详解
Aug 13 Javascript
JavaScript实现省市联动效果
Nov 22 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 文件上传功能实现代码
2009/06/24 PHP
$_GET['goods_id']+0 的使用详解
2013/06/06 PHP
php中文乱码怎么办如何让浏览器自动识别utf-8
2014/01/15 PHP
PHP把MSSQL数据导入到MYSQL的方法
2014/12/27 PHP
jquery获取多个checkbox的值异步提交给php的方法
2015/06/24 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
2016/07/14 PHP
php获取当前url地址的方法小结
2017/01/10 PHP
Swoole源码中如何查询Websocket的连接问题详解
2020/08/30 PHP
js 数组克隆方法 小结
2010/03/20 Javascript
JavaScript实现快速排序(自已编写)
2012/12/19 Javascript
下载文件个别浏览器文件名乱码解决办法
2013/03/19 Javascript
jquery点击页面任何区域实现鼠标焦点十字效果
2013/06/21 Javascript
javascript读取Xml文件做一个二级联动菜单示例
2014/03/17 Javascript
jQuery中[attribute]选择器用法实例
2014/12/31 Javascript
详解JavaScript对W3C DOM模版的支持情况
2015/06/16 Javascript
JavaScript基于Dom操作实现查找、修改HTML元素的内容及属性的方法
2017/01/20 Javascript
详解vue-cli 脚手架项目-package.json
2017/07/04 Javascript
使用nodejs+express实现简单的文件上传功能
2017/12/27 NodeJs
webpack-dev-server自动更新页面方法
2018/02/22 Javascript
koa socket即时通讯的示例代码
2018/09/07 Javascript
nodejs中express入门和基础知识点学习
2018/09/13 NodeJs
javascript系统时间设置操作示例
2019/06/17 Javascript
react实现移动端下拉菜单的示例代码
2020/01/16 Javascript
在vue-cli3.0 中使用预处理器 (Sass/Less/Stylus) 配置全局变量操作
2020/08/10 Javascript
Javascript异步流程控制之串行执行详解
2020/09/27 Javascript
[49:40]2018DOTA2亚洲邀请赛小组赛 A组加赛 TNC vs Newbee
2018/04/03 DOTA
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
python计数排序和基数排序算法实例
2014/04/25 Python
Python实现简单多线程任务队列
2016/02/27 Python
TensorFlow saver指定变量的存取
2018/03/10 Python
Django 使用logging打印日志的实例
2018/04/28 Python
python 求1-100之间的奇数或者偶数之和的实例
2019/06/11 Python
Keras预训练的ImageNet模型实现分类操作
2020/07/07 Python
python如何修改文件时间属性
2021/02/05 Python
年度考核自我评价
2014/01/25 职场文书
创建省级文明单位实施方案
2014/02/27 职场文书