关于JavaScript中name的意义冲突示例介绍_Javascript教程-查字典教程网
关于JavaScript中name的意义冲突示例介绍
关于JavaScript中name的意义冲突示例介绍
发布时间:2017-01-14 来源:查字典编辑
摘要:在昨天的《Javascript权威指南》学习笔记之十:ECMAScript5增强的对象模型一文中,对于一段代码的调试出现了一个奇怪现象,现将...

在昨天的《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>

运行结果:

这是为什么呢?就只是改了一个简单的变量名啊

问题出在了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教程学习
    编程开发子分类