摘要:基本概念方法會返回一個布爾值,指示對象自身屬性中非繼承屬性是否具有指定的屬性,如果具有帶指定名稱的屬性,則方法返回,否則返回。此方法不會檢查對象原型鏈中的屬性該屬性必須是對象本身的一個成員。使用語法參數(shù),必需。
hasOwnProperty基本概念
hasOwnProperty() 方法會返回一個布爾值,指示對象自身屬性中(非繼承屬性)是否具有指定的屬性,使用語法
如果 object 具有帶指定名稱的屬性,則 hasOwnProperty 方法返回 true,否則返回 false。此方法不會檢查對象原型鏈中的屬性;該屬性必須是對象本身的一個成員。
obj.hasOwnProperty(prop)參數(shù)
obj,必需。對象的實(shí)例。
prop,必需。一個屬性名稱的字符串值。
//實(shí)例化一個對象 const obj = new Object(); //為obj添加屬性name obj.name = "陌上寒"; //為obj添加屬性sex obj.sex="male" const a = obj.hasOwnProperty("name"); console.log(a);// true //刪除obj的name屬性 delete obj.name const b = obj.hasOwnProperty("name"); console.log(b); // false const c = obj.hasOwnProperty("sex"); console.log(c); // true無法通過obj.hasOwnProperty(prop)判斷繼承屬性
obj= new Object(); obj.name = "陌上寒"; const a = obj.hasOwnProperty("name"); console.log(a);//true const b = obj.hasOwnProperty("toString"); console.log(b);//false const c = obj.hasOwnProperty("hasOwnProperty"); console.log(c);//false如果要判斷繼承屬性,通過原型鏈prototype判斷
const d = Object.prototype.hasOwnProperty("toString") console.log(d);//true const e = String.prototype.hasOwnProperty("split") console.log(e);//true遍歷一個對象的所有自身屬性
通過for...in循環(huán)對象的所有枚舉屬性,然后再使用hasOwnProperty()方法來忽略繼承屬性。
換一種寫法
const obj?={ name:"陌上寒", sex:"male" } for (let key in obj) { if (obj.hasOwnProperty(key)) { console.log(`${key}: ${obj[key]}`) } else console.log(key); } }
輸出
const foo = { hasOwnProperty: function() { return false; }, bar: "這是一個坑,可能永遠(yuǎn)返回false" }; const hasBar = foo.hasOwnProperty("bar"); console.log(hasBar);// 始終返回 false // 如果擔(dān)心這種情況,可以直接使用原型鏈上真正的 hasOwnProperty 方法 const a = ({}).hasOwnProperty.call(foo, "bar"); // true console.log(a); // 也可以使用 Object 原型上的 hasOwnProperty 屬性 const b = Object.prototype.hasOwnProperty.call(foo, "bar"); // true console.log(b);
原文地址
參考鏈接:
Object.prototype.hasOwnProperty()")
hasOwnProperty 方法 (Object) (JavaScript).aspx "hasOwnProperty 方法 (Object) (JavaScript)")
js屬性對象的hasOwnProperty方法
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/98910.html
摘要:要用作原型的對象。函數(shù)對象可以創(chuàng)建普通對象,這個我們上面講過了回顧一下這是一個自定義構(gòu)造函數(shù)普通對象沒法創(chuàng)建函數(shù)對象,凡是通過創(chuàng)建的對象都是函數(shù)對象,其他都是普通對象通常通過創(chuàng)建,可以通過來判斷。 關(guān)于js的原型和原型鏈,有人覺得這是很頭疼的一塊知識點(diǎn),其實(shí)不然,它很基礎(chǔ),不信,往下看要了解原型和原型鏈,我們得先從對象說起 創(chuàng)建對象 創(chuàng)建對象的三種方式: 對象直接量 通過對象直接量創(chuàng)建...
摘要:原文鏈接關(guān)于的原型和原型鏈,看我就夠了一參考鏈接闖關(guān)記之原型及原型鏈之原型與原型鏈一篇文章帶你理解原型和原型鏈徹底理解原型鏈一的默認(rèn)指向圖解和的三角關(guān)系原型和原型鏈三張圖搞懂的原型對象與原型鏈 溫故 創(chuàng)建對象的三種方式 通過對象直接量 通過new創(chuàng)建對象 通過Object.create() js中對象分為兩種 函數(shù)對象 普通對象 仔細(xì)觀察如下代碼 function Foo(na...
摘要:對于中的引用類型而言,是保存著它們所有實(shí)例方法的真正所在。高級程序設(shè)計(jì)構(gòu)造函數(shù)陌上寒原型對象有一個屬性,指向該原型對象對應(yīng)的構(gòu)造函數(shù)為什么有屬性那是因?yàn)槭堑膶?shí)例。 溫故 我們先回顧一下前兩天討論的內(nèi)容 創(chuàng)建對象的三種方式 通過對象直接量 通過new創(chuàng)建對象 通過Object.create() js中對象分為兩種 函數(shù)對象 普通對象 原型對象prototype 每一個函數(shù)對象都...
摘要:也就是說,所有的函數(shù)和構(gòu)造函數(shù)都是由生成,包括本身。如果只考慮構(gòu)造函數(shù)和及其關(guān)聯(lián)的原型對象,在不解決懸念的情況下,圖形是這樣的可以看到,每一個構(gòu)造函數(shù)和它關(guān)聯(lián)的原型對象構(gòu)成一個環(huán),而且每一個構(gòu)造函數(shù)的屬性無所指。 前言 JavaScript 是我接觸到的第二門編程語言,第一門是 C 語言。然后才是 C++、Java 還有其它一些什么。所以我對 JavaScript 是非常有感情的,畢...
閱讀 599·2021-11-18 13:12
閱讀 1321·2021-11-15 11:39
閱讀 2478·2021-09-23 11:22
閱讀 6204·2021-09-22 15:15
閱讀 3661·2021-09-02 09:54
閱讀 2316·2019-08-30 11:10
閱讀 3248·2019-08-29 14:13
閱讀 2916·2019-08-29 12:49