摘要:附如果你想獲取一個(gè)對(duì)象的所有屬性甚至包括不可枚舉的即可見下面一種方法方法返回一個(gè)由指定對(duì)象的所有自身屬性的屬性名包括不可枚舉屬性但不包括值作為名稱的屬性組成的數(shù)組。
JavaScript中遍歷獲取對(duì)象屬性和方法主要有三種: Object.keys()、Object.getOwnPropertyNames()、for...in... 一、Object.keys()、Object.getOwnPropertyNames()、for...in...區(qū)別
for...in ...會(huì)輸出自身以及原型鏈上可枚舉的屬性
Object.keys可以用來(lái)獲取對(duì)象自身可枚舉的屬性鍵
Object.getOwnPropertyNames可以用來(lái)獲取對(duì)象自身的全部屬性名
二、Object.keys()、Object.getOwnPropertyNames()、for...in...實(shí)際應(yīng)用1、for...in...(通過屬性個(gè)數(shù)來(lái)確定循環(huán)圈數(shù),想要遍歷誰(shuí)就in誰(shuí))
hasOwnPrototype():判斷屬性是否是自身的屬性,返回值是Boolean類型的true和false,對(duì)于繼承的屬性返回的是false(過濾)
propertyIsEnumerable():是hasOwnProperty()的增強(qiáng)版,只有檢測(cè)到是只有屬性且這個(gè)屬性的可枚舉為true時(shí)它才返回true
in:只能判斷對(duì)象是否能訪問到該元素,繼承過來(lái)的屬性也能夠訪問
instanceof:可以用來(lái)判斷某個(gè)構(gòu)造函數(shù)的prototype屬性是否存在于另外一個(gè)要檢測(cè)對(duì)象的原型鏈上
如:A instanceof B A對(duì)象是不是B構(gòu)造函數(shù)構(gòu)造出來(lái)的,看A對(duì)象的原型鏈上有沒有B的原型
2、Object.keys() 方法(返回一個(gè)所有元素字符串類型的數(shù)組)
會(huì)返回一個(gè)由一個(gè)給定對(duì)象的自身可枚舉屬性組成的數(shù)組,數(shù)組中屬性名的排列順序和使用 for...in 循環(huán)遍歷該對(duì)象時(shí)返回的順序一致 (兩者的主要區(qū)別是 一個(gè) for-in 循環(huán)還會(huì)枚舉其原型鏈上的屬性)。
// simple array var arr = ["a", "b", "c"]; console.log(Object.keys(arr)); // console: ["0", "1", "2"] // array like object var obj = { 0: "a", 1: "b", 2: "c" }; console.log(Object.keys(obj)); // console: ["0", "1", "2"] // array like object with random key ordering var anObj = { 100: "a", 2: "b", 7: "c" }; console.log(Object.keys(anObj)); // console: ["2", "7", "100"] // getFoo is a property which isn"t enumerable var myObj = Object.create({}, { getFoo: { value: function () { return this.foo; } } }); myObj.foo = 1; console.log(Object.keys(myObj)); // console: ["foo"]
附:如果你想獲取一個(gè)對(duì)象的所有屬性,甚至包括不可枚舉的,即可見下面一種方法
3、Object.getOwnPropertyNames()方法
返回一個(gè)由指定對(duì)象的所有自身屬性的屬性名(包括不可枚舉屬性但不包括Symbol值作為名稱的屬性)組成的數(shù)組。
var arr = ["a", "b", "c"]; console.log(Object.getOwnPropertyNames(arr).sort()); // ["0", "1", "2", "length"] // 類數(shù)組對(duì)象 var obj = { 0: "a", 1: "b", 2: "c"}; console.log(Object.getOwnPropertyNames(obj).sort()); // ["0", "1", "2"] // 使用Array.forEach輸出屬性名和屬性值 Object.getOwnPropertyNames(obj).forEach(function(val, idx, array) { console.log(val + " -> " + obj[val]); }); // 輸出 // 0 -> a // 1 -> b // 2 -> c //不可枚舉屬性 var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; }, enumerable: false } }); my_obj.foo = 1; console.log(Object.getOwnPropertyNames(my_obj).sort()); // ["foo", "getFoo"]
附:Object.keys或用for...in循環(huán)使用時(shí)可通過hasOwnProperty()方法過濾掉獲取到原型鏈上的可枚舉屬性,實(shí)現(xiàn)和Object.getOwnPropertyNames()方法同樣的效果
三、區(qū)別數(shù)組和對(duì)象的方法constructor、instanceof、call.tostring
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/94786.html
摘要:所以說(shuō)遍歷屬性時(shí),要考慮這兩個(gè)因素。開始遍歷先定義兩個(gè)類吧和,后者繼承前者。然后再聲明并初始化一個(gè)的實(shí)例。 原文鏈接 JavaScript 中遍歷對(duì)象的屬性 參考 JavaScript中的屬性:如何遍歷屬性《JavaScript 高級(jí)程序設(shè)計(jì)》 概述 遍歷 JavaScript 對(duì)象中的屬性沒有其他語(yǔ)言那么簡(jiǎn)單,因?yàn)閮蓚€(gè)因素會(huì)影響屬性的遍歷:對(duì)象屬性的屬性描述符 (property ...
摘要:但好在還給我們提供了一個(gè)方法,每一個(gè)對(duì)象都有這樣一個(gè)方法,專門用來(lái)判斷某個(gè)屬性是否是該對(duì)象的私有屬性。如果你想要用對(duì)象字面形式,你只能在創(chuàng)建對(duì)象時(shí)定義訪問器屬性。在中,我們使用凍結(jié)一個(gè)對(duì)象,并且使用來(lái)判斷一個(gè)對(duì)象是否被凍結(jié)。 說(shuō)完了對(duì)象那些不常用的冷知識(shí),是時(shí)候來(lái)看看JavaScript中對(duì)象屬性有哪些有意思的東西了。 不出你所料,對(duì)象屬性自然也有其相應(yīng)的特征屬性,但是這個(gè)話題有點(diǎn)復(fù)雜...
摘要:遍歷對(duì)象的屬性并沒有像中遍歷一個(gè)那么簡(jiǎn)單,主要原因有以下兩點(diǎn)在中對(duì)象的屬性分為可枚舉與不可枚舉之分他們是由屬性的的值決定的。 javascript遍歷對(duì)象的屬性并沒有像java中遍歷一個(gè)Map那么簡(jiǎn)單,主要原因有以下兩點(diǎn): 在javascript中對(duì)象的屬性分為可枚舉與不可枚舉之分,他們是由屬性的 enumerable 的值決定的。可枚舉性 決定了這個(gè)屬性是否可以被 for-in ...
摘要:面向?qū)ο竺嫦驅(qū)ο缶幊痰娜Q為簡(jiǎn)稱。面向?qū)ο缶幊淌怯贸橄蠓绞絼?chuàng)建基于現(xiàn)實(shí)世界模型的一種編程方式。面向?qū)ο缶幊炭梢钥醋鍪鞘褂靡幌盗袑?duì)象相互協(xié)作的軟件設(shè)計(jì)。面向?qū)ο缶幊痰娜齻€(gè)主要特征是封裝繼承多態(tài)。 面向?qū)ο?面向?qū)ο缶幊痰娜Q為Object Oriented Programming,簡(jiǎn)稱OOP。面向?qū)ο缶幊淌怯贸橄蠓绞絼?chuàng)建基于現(xiàn)實(shí)世界模型的一種編程方式。面向?qū)ο缶幊炭梢钥醋鍪鞘褂靡幌盗袑?duì)象...
摘要:屬性的簡(jiǎn)潔表示法在中允許直接寫入變量和函數(shù),作為對(duì)象的屬性和方法,使得代碼的書寫更為簡(jiǎn)潔。循環(huán)遍歷對(duì)象自身的和繼承的可枚舉屬性不含屬性。返回一個(gè)數(shù)組,包含對(duì)象自身的所有屬性的鍵名。 showImg(https://segmentfault.com/img/remote/1460000019259004?w=1282&h=1920); 1. 屬性的簡(jiǎn)潔表示法 在ES6中 允許直接寫入變量...
閱讀 2485·2023-04-25 21:41
閱讀 1657·2021-09-22 15:17
閱讀 1928·2021-09-22 10:02
閱讀 2443·2021-09-10 11:21
閱讀 2585·2019-08-30 15:53
閱讀 1004·2019-08-30 15:44
閱讀 957·2019-08-30 13:46
閱讀 1145·2019-08-29 18:36