關(guān)于JavaScript中name的意義沖突示例介紹
更新時間:2014年05月29日 14:48:25 作者:
這篇文章主要介紹了關(guān)于JavaScript中name的意義沖突,需要的朋友可以參考下
在昨天的《Javascript權(quán)威指南》學習筆記之十:ECMAScript 5 增強的對象模型一文中,對于一段代碼的調(diào)試出現(xiàn)了一個奇怪現(xiàn)象,現(xiàn)將源代碼貼在下面:
<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中運行結(jié)果:
http://img.blog.csdn.net/20140529073008296?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTA0Mzg0Mw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
這個結(jié)果是正確的,但是,改一個地方,結(jié)果就不同了
<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>
運行結(jié)果:
這是為什么呢?就只是改了一個簡單的變量名啊
問題出在了name身上,但是本人出入JS,不懂,在網(wǎng)上找了資料也沒有結(jié)果,后面就去請教了一個師兄,也把問題放在了論壇上:http://bbs.csdn.net/topics/390799744?page=1#post-397474060,
name是window屬性,作用是設(shè)置或返回窗口的名字,數(shù)據(jù)類型是字符串。因為第一句是function Person(){},已經(jīng)結(jié)束了,所以下面的代碼可能在全局context中,也就是說你以為alert(JSON.stringify(name));是輸出的上面的var name,但實際上可能輸出的是window.name。至于輸出[Object object],這個類型是name的值的類型。
復(fù)制代碼 代碼如下:
<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中運行結(jié)果:
http://img.blog.csdn.net/20140529073008296?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTA0Mzg0Mw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
這個結(jié)果是正確的,但是,改一個地方,結(jié)果就不同了
復(fù)制代碼 代碼如下:
<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>
運行結(jié)果:

這是為什么呢?就只是改了一個簡單的變量名啊
問題出在了name身上,但是本人出入JS,不懂,在網(wǎng)上找了資料也沒有結(jié)果,后面就去請教了一個師兄,也把問題放在了論壇上:http://bbs.csdn.net/topics/390799744?page=1#post-397474060,
name是window屬性,作用是設(shè)置或返回窗口的名字,數(shù)據(jù)類型是字符串。因為第一句是function Person(){},已經(jīng)結(jié)束了,所以下面的代碼可能在全局context中,也就是說你以為alert(JSON.stringify(name));是輸出的上面的var name,但實際上可能輸出的是window.name。至于輸出[Object object],這個類型是name的值的類型。
相關(guān)文章
JS字符串false轉(zhuǎn)boolean的方法(推薦)
下面小編就為大家?guī)硪黄狫S字符串false轉(zhuǎn)boolean的方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03MockJs結(jié)合json-server模擬后臺數(shù)據(jù)
這篇文章主要為大家詳細介紹了MockJs結(jié)合json-server模擬后臺數(shù)據(jù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-07-07