JS hasOwnProperty()方法檢測(cè)一個(gè)屬性是否是對(duì)象的自有屬性的方法
JavaScript hasOwnProperty() 方法是 Object 的原型方法(也稱實(shí)例方法),它定義在 Object.prototype 對(duì)象之上,所有 Object 的實(shí)例對(duì)象都會(huì)繼承 hasOwnProperty() 方法。
hasOwnProperty() 方法用來(lái)檢測(cè)一個(gè)屬性是否是對(duì)象的自有屬性,而不是從原型鏈繼承的。如果該屬性是自有屬性,那么返回 true,否則返回 false。換句話說(shuō),hasOwnProperty() 方法不會(huì)檢測(cè)對(duì)象的原型鏈,只會(huì)檢測(cè)當(dāng)前對(duì)象本身,只有當(dāng)前對(duì)象本身存在該屬性時(shí)才返回 true。
例如,在下面自定義類型中,this.name 就表示對(duì)象的自有屬性,而原型對(duì)象中的 name 屬性就是繼承屬性。
function F() { //自定義數(shù)據(jù)類型 this.name = "自有屬性"; } F.prototype.name = "繼承屬性";
hasOwnProperty() 的語(yǔ)法格式如下:
object.hasOwnProperty(propertyName);
參數(shù)說(shuō)明:propertyName 參數(shù)表示要檢測(cè)的屬性名稱。
返回值:返回一個(gè)布爾值。如果 propertyName 是自有屬性,那么返回 true,否則返回 false。
示例1
針對(duì)上面的自定義類型,可以實(shí)例化對(duì)象,然后判定當(dāng)前對(duì)象調(diào)用的屬性 name 是什么類型。
var f = new F(); //實(shí)例化對(duì)象 console.log(f.hasOwnProperty("name")); //返回true,說(shuō)明當(dāng)前調(diào)用的 name是自有屬性 console.log(f.name); //返回字符串“自有屬性”
凡是構(gòu)造函數(shù)的原型屬性(原型對(duì)象包含的屬性),都是繼承屬性,使用 hasOwnProperty() 方法檢測(cè)時(shí),都會(huì)返回 false。但是,對(duì)于原型對(duì)象本身來(lái)說(shuō),這些原型屬性又是原型對(duì)象的自有屬性,所以返回值又是 true。
示例2
在下面示例中,演示了 toString() 方法對(duì)于 Date 對(duì)象來(lái)說(shuō)是繼承屬性,但是對(duì)于 Date 構(gòu)造函數(shù)的原型對(duì)象來(lái)說(shuō),則是它的自有屬性。
var d = Date; console.log(d.hasOwnProperty("toString")); //返回false,說(shuō)明toString()是Date的自有屬性 var d = Date.prototype; console.log(d.hasOwnProperty("toString")); //返回true,說(shuō)明toString()是Date.prototype屬性
hasOwnProperty() 方法只能判斷指定對(duì)象中是否包含指定名稱的屬性,無(wú)法檢查對(duì)象原型鏈中是否包含某個(gè)屬性,所以能夠檢測(cè)出來(lái)的屬性必須是對(duì)象成員。
示例3
下面示例演示了 hasOwnProperty() 方法所能檢測(cè)的屬性范圍。
var o = { //對(duì)象直接量 o1 : { //子對(duì)象直接量 o2 : { //孫子對(duì)象直接量 name : 1 //孫子對(duì)象直接量的屬性 } } }; console.log(o.hasOwnProperty("o1")); //返回true,說(shuō)明o1是o的自有屬性 console.log(o.hasOwnProperty("o2")); //返回false,說(shuō)明o2不是o的自有屬性 console.log(o.o1.hasOwnProperty("o2")); //返回true,說(shuō)明o2是o1的自有屬性 console.log(o.o1.hasOwnProperty("name")); //返回false,說(shuō)明name不是o1的自有屬性 console.log(o.o1.hasOwnProperty("name")); //返回true,說(shuō)明name不是o2的自有屬性
到此這篇關(guān)于JS hasOwnProperty()方法檢測(cè)一個(gè)屬性是否是對(duì)象的自有屬性的方法的文章就介紹到這了,更多相關(guān)JS hasOwnProperty 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
你不知道的JS?ES6字符串標(biāo)簽函數(shù)分享
字符串標(biāo)簽函數(shù)是一種特殊的函數(shù)調(diào)用語(yǔ)法,本文將深入探討ES6中字符串標(biāo)簽函數(shù)的工作原理,并結(jié)合具體的代碼展示它的威力,快跟隨小編一起學(xué)習(xí)起來(lái)吧2023-06-06每天一篇javascript學(xué)習(xí)小結(jié)(Boolean對(duì)象)
這篇文章主要介紹了javascript中的Boolean對(duì)象知識(shí)點(diǎn),對(duì)Boolean對(duì)象的基本使用方法進(jìn)行解釋,一段很詳細(xì)的代碼介紹,感興趣的小伙伴們可以參考一下2015-11-11JS自定義對(duì)象創(chuàng)建與簡(jiǎn)單使用方法示例
這篇文章主要介紹了JS自定義對(duì)象創(chuàng)建與簡(jiǎn)單使用方法,結(jié)合實(shí)例形式分析了JavaScript創(chuàng)建與使用自定義對(duì)象的相關(guān)操作技巧,需要的朋友可以參考下2020-01-01JavaScript 權(quán)威指南(第四版) 讀書(shū)筆記
JavaScript 權(quán)威指南(第四版) 讀書(shū)筆記,大家可以看看。2009-08-08opencv 識(shí)別微信登錄驗(yàn)證滑動(dòng)塊位置
這篇文章主要介紹了opencv 識(shí)別微信登錄驗(yàn)證滑動(dòng)塊位置及各自的優(yōu)缺點(diǎn),需要的朋友可以參考下2018-08-08avalon js實(shí)現(xiàn)仿google plus圖片多張拖動(dòng)排序附源碼下載
這篇文章主要介紹了avalon js實(shí)現(xiàn)仿google plus圖片多張拖動(dòng)排序附源碼下載的相關(guān)資料,需要的朋友可以參考下2015-09-09如何基于layui的laytpl實(shí)現(xiàn)數(shù)據(jù)綁定的示例代碼
這篇文章主要介紹了如何基于layui的laytpl實(shí)現(xiàn)數(shù)據(jù)綁定的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04