摘要:基本概念方法會返回一個布爾值,指示對象自身屬性中非繼承屬性是否具有指定的屬性,如果具有帶指定名稱的屬性,則方法返回,否則返回。此方法不會檢查對象原型鏈中的屬性該屬性必須是對象本身的一個成員。使用語法參數,必需。
hasOwnProperty基本概念
hasOwnProperty() 方法會返回一個布爾值,指示對象自身屬性中(非繼承屬性)是否具有指定的屬性,使用語法
如果 object 具有帶指定名稱的屬性,則 hasOwnProperty 方法返回 true,否則返回 false。此方法不會檢查對象原型鏈中的屬性;該屬性必須是對象本身的一個成員。
obj.hasOwnProperty(prop)參數
obj,必需。對象的實例。
prop,必需。一個屬性名稱的字符串值。
//實例化一個對象 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循環對象的所有枚舉屬性,然后再使用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: "這是一個坑,可能永遠返回false" }; const hasBar = foo.hasOwnProperty("bar"); console.log(hasBar);// 始終返回 false // 如果擔心這種情況,可以直接使用原型鏈上真正的 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方法
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/98910.html
摘要:要用作原型的對象。函數對象可以創建普通對象,這個我們上面講過了回顧一下這是一個自定義構造函數普通對象沒法創建函數對象,凡是通過創建的對象都是函數對象,其他都是普通對象通常通過創建,可以通過來判斷。 關于js的原型和原型鏈,有人覺得這是很頭疼的一塊知識點,其實不然,它很基礎,不信,往下看要了解原型和原型鏈,我們得先從對象說起 創建對象 創建對象的三種方式: 對象直接量 通過對象直接量創建...
摘要:原文鏈接關于的原型和原型鏈,看我就夠了一參考鏈接闖關記之原型及原型鏈之原型與原型鏈一篇文章帶你理解原型和原型鏈徹底理解原型鏈一的默認指向圖解和的三角關系原型和原型鏈三張圖搞懂的原型對象與原型鏈 溫故 創建對象的三種方式 通過對象直接量 通過new創建對象 通過Object.create() js中對象分為兩種 函數對象 普通對象 仔細觀察如下代碼 function Foo(na...
摘要:對于中的引用類型而言,是保存著它們所有實例方法的真正所在。高級程序設計構造函數陌上寒原型對象有一個屬性,指向該原型對象對應的構造函數為什么有屬性那是因為是的實例。 溫故 我們先回顧一下前兩天討論的內容 創建對象的三種方式 通過對象直接量 通過new創建對象 通過Object.create() js中對象分為兩種 函數對象 普通對象 原型對象prototype 每一個函數對象都...
摘要:也就是說,所有的函數和構造函數都是由生成,包括本身。如果只考慮構造函數和及其關聯的原型對象,在不解決懸念的情況下,圖形是這樣的可以看到,每一個構造函數和它關聯的原型對象構成一個環,而且每一個構造函數的屬性無所指。 前言 JavaScript 是我接觸到的第二門編程語言,第一門是 C 語言。然后才是 C++、Java 還有其它一些什么。所以我對 JavaScript 是非常有感情的,畢...
閱讀 608·2021-11-18 13:12
閱讀 1327·2021-11-15 11:39
閱讀 2488·2021-09-23 11:22
閱讀 6222·2021-09-22 15:15
閱讀 3669·2021-09-02 09:54
閱讀 2320·2019-08-30 11:10
閱讀 3254·2019-08-29 14:13
閱讀 2919·2019-08-29 12:49