JavaScript檢測(cè)實(shí)例屬性, 原型屬性
0.前提
JavaScript對(duì)象的屬性分為兩種存在形態(tài). 一種是存在實(shí)例中, 另一是存在原型對(duì)象中.
根據(jù)上述, 檢測(cè)屬性的時(shí)候會(huì)出現(xiàn)4種情況
既不存在實(shí)例中, 也不存在原型對(duì)象中
存在實(shí)例中, 不存在原型對(duì)象中
不存在實(shí)例中, 存在原型對(duì)象中
既存在實(shí)例中, 也存在原型對(duì)象中
1.hasOwnPrototype()
hasOwnPrototype()接受一個(gè)字符串格式的屬性名稱(chēng), 如果實(shí)例本身存在該屬性(情況2/情況4), 返回true. 否則, 返回false(情況1/情況3).
functino Person() {}
Person.prototype.name = 'apple';
var person1 = new Person();
var person2 = new Person();
person1.name = 'banana';
console.log(person1.hasOwnPrototype(name)); //true
console.log(person2.hasOwnPrototype(name)); //false
2.in操作符
in操作符無(wú)論屬性是存在實(shí)例本身中, 還是原型對(duì)象中, 就會(huì)返回true(情況2/情況3/情況4); 否則, 返回false(情況1).
console.log('name' in person1); //true
console.log('name' in person2); //true
3.檢測(cè)存在原型的屬性
結(jié)合in操作符和hasOwnProperty()就可以自定義函數(shù)來(lái)檢測(cè)原型中是否存在給定的屬性.
function hasPrototypeProperty(object, name) {
return !object.hasOwnPrototype(name) && (name in object);
}
console.log(hasPrototypeProperty(person1, 'name')); //false
console.log(hasPrototypeProperty(person2, 'name')); //true
原型中存在給定屬性, 返回true(情況3). 否則返回false(情況1/情況2/情況4).
以上就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡
相關(guān)文章
詳解?Map?和?WeakMap?區(qū)別以及使用場(chǎng)景
這篇文章主要介紹了詳解?Map?和?WeakMap?區(qū)別以及使用場(chǎng)景,Map本質(zhì)上是一個(gè)鍵值對(duì)的集合,WeakMap?只能將對(duì)象作為鍵名,下面來(lái)一起倆姐更多詳細(xì)內(nèi)容吧,希望這一篇文章能讓你對(duì)?Map?有更好的理解,或者能夠幫你理解?Map?和?WeakMap2022-01-01
解決前端使用xlsx.js工具讀取excel遇到時(shí)間日期少43秒問(wèn)題
這篇文章主要給大家介紹了關(guān)于如何解決前端使用xlsx.js工具讀取excel遇到時(shí)間日期少43秒問(wèn)題的相關(guān)資料,xlsx.js是一種前端庫(kù),它可以使您使用JavaScript讀取、解析和導(dǎo)出電子表格文件,如Microsoft Excel,需要的朋友可以參考下2024-03-03
javascript設(shè)計(jì)模式之單體模式學(xué)習(xí)筆記
這篇文章主要為大家詳細(xì)介紹了javascript設(shè)計(jì)模式之單體模式學(xué)習(xí)筆記,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
django admin 使用SimpleUI自定義按鈕彈窗框示例
Django 后臺(tái)admin有大量的屬性和方法,擁有強(qiáng)大的功能和自定義能力,這篇文章主要介紹了django admin 使用SimpleUI自定義按鈕彈窗框示例,需要的朋友可以參考下2023-04-04
JS鮮為人知的問(wèn)題之[] == ![]結(jié)果為true、而{} == !{}卻為false
這篇文章主要給大家介紹了關(guān)于JS鮮為人知的問(wèn)題之[] == ![]結(jié)果為true、而{} == !{}卻為false的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
微信小程序開(kāi)發(fā)指南之字體樣式設(shè)置
在小程序開(kāi)發(fā)中 經(jīng)常需要我們自定義字體樣式,下面這篇文章主要給大家介紹了關(guān)于微信小程序開(kāi)發(fā)指南之字體樣式設(shè)置的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03
javascript對(duì)象的相關(guān)操作小結(jié)
下面小編就為大家?guī)?lái)一篇javascript對(duì)象的相關(guān)操作小結(jié)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05

