關(guān)于JavaScript中name的意義沖突示例介紹
更新時(shí)間:2014年05月29日 14:48:25 作者:
這篇文章主要介紹了關(guān)于JavaScript中name的意義沖突,需要的朋友可以參考下
在昨天的《Javascript權(quán)威指南》學(xué)習(xí)筆記之十:ECMAScript 5 增強(qiáng)的對(duì)象模型一文中,對(duì)于一段代碼的調(diào)試出現(xiàn)了一個(gè)奇怪現(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中運(yùn)行結(jié)果:
http://img.blog.csdn.net/20140529073008296?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTA0Mzg0Mw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
這個(gè)結(jié)果是正確的,但是,改一個(gè)地方,結(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>
運(yùn)行結(jié)果:
這是為什么呢?就只是改了一個(gè)簡(jiǎn)單的變量名啊
問題出在了name身上,但是本人出入JS,不懂,在網(wǎng)上找了資料也沒有結(jié)果,后面就去請(qǐng)教了一個(gè)師兄,也把問題放在了論壇上:http://bbs.csdn.net/topics/390799744?page=1#post-397474060,
name是window屬性,作用是設(shè)置或返回窗口的名字,數(shù)據(jù)類型是字符串。因?yàn)榈谝痪涫莊unction Person(){},已經(jīng)結(jié)束了,所以下面的代碼可能在全局context中,也就是說你以為alert(JSON.stringify(name));是輸出的上面的var name,但實(shí)際上可能輸出的是window.name。至于輸出[Object object],這個(gè)類型是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中運(yùn)行結(jié)果:
http://img.blog.csdn.net/20140529073008296?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTA0Mzg0Mw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
這個(gè)結(jié)果是正確的,但是,改一個(gè)地方,結(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>
運(yùn)行結(jié)果:
這是為什么呢?就只是改了一個(gè)簡(jiǎn)單的變量名啊
問題出在了name身上,但是本人出入JS,不懂,在網(wǎng)上找了資料也沒有結(jié)果,后面就去請(qǐng)教了一個(gè)師兄,也把問題放在了論壇上:http://bbs.csdn.net/topics/390799744?page=1#post-397474060,
name是window屬性,作用是設(shè)置或返回窗口的名字,數(shù)據(jù)類型是字符串。因?yàn)榈谝痪涫莊unction Person(){},已經(jīng)結(jié)束了,所以下面的代碼可能在全局context中,也就是說你以為alert(JSON.stringify(name));是輸出的上面的var name,但實(shí)際上可能輸出的是window.name。至于輸出[Object object],這個(gè)類型是name的值的類型。
相關(guān)文章
javascript 函數(shù)及作用域總結(jié)介紹
本文是對(duì)javascript在的函數(shù)及作用域進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-11-11
JS實(shí)現(xiàn)圖片旋轉(zhuǎn)動(dòng)畫效果封裝與使用示例
這篇文章主要介紹了JS實(shí)現(xiàn)圖片旋轉(zhuǎn)動(dòng)畫效果封裝與使用,結(jié)合實(shí)例形式分析了JavaScript實(shí)現(xiàn)圖片元素旋轉(zhuǎn)的相關(guān)功能代碼的封裝與使用操作技巧,需要的朋友可以參考下2018-07-07
關(guān)于function類中定義變量this的簡(jiǎn)單說明
下面小編就為大家?guī)硪黄P(guān)于function類中定義變量this的簡(jiǎn)單說明。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-05-05
JavaScript限定復(fù)選框的選擇個(gè)數(shù)示例代碼
有10個(gè)復(fù)選框,用戶最多只能勾選3個(gè),否則就灰掉所有復(fù)選框,具體實(shí)現(xiàn)思路及代碼如下,感興趣的朋友可以參考下,希望對(duì)大家有所幫助2013-08-08
JS使用canvas中的measureText方法測(cè)量字體寬度示例
這篇文章主要介紹了JS使用canvas中的measureText方法測(cè)量字體寬度,結(jié)合實(shí)例形式分析了canvas的measureText方法相關(guān)使用技巧,需要的朋友可以參考下2019-02-02

