国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

淺談JavaScript中的屬性:如何遍歷屬性

2019-11-19 15:27:14
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

在JavaScript中,遍歷一個(gè)對(duì)象的屬性往往沒(méi)有在其他語(yǔ)言中遍歷一個(gè)哈希(有些語(yǔ)言稱(chēng)為字典)的鍵那么簡(jiǎn)單。這主要有兩個(gè)方面的原因:一個(gè)是,JavaScript中的對(duì)象通常都處在某個(gè)原型鏈中,它會(huì)從一個(gè)或多個(gè)的上層原型上繼承一些屬性.第二個(gè)原因是,JavaScript中的屬性不光有值,它還有一些除了值以外的其他特性,其中一個(gè)影響屬性遍歷的特性就是[[Enumerable]],如果該值為true,則稱(chēng)這個(gè)屬性是可枚舉的,否則反之。

知道了這些,我們就可以把屬性的遍歷分為四種情況.

注:示例代碼中,我們要遍歷的對(duì)象是瀏覽器中的window,環(huán)境為Firefox 19,代碼運(yùn)行在空白頁(yè)面中的script標(biāo)簽里。沒(méi)有Firebug或者其他調(diào)試工具的影響(會(huì)導(dǎo)入一些全局變量,console等)。

1.遍歷可枚舉的自身屬性

可枚舉的意思就是該屬性的[[Enumerable]]特性為true,自身屬性的意思就是該屬性不是從原型鏈上繼承下來(lái)的.

(function () { var propertys = Object.keys(window); alert(propertys.length);   //3 alert(propertys.join("/n"));  //window,document,InstallTrigger,除了最后一個(gè)是火狐私有的屬性,原來(lái)window對(duì)象只有兩個(gè)可枚舉的自身屬性.window屬性指向window對(duì)象自身,一般沒(méi)什么用.})()

2.遍歷所有的自身屬性

特性為不可枚舉的屬性也并不是遍歷不到,ES5給我們提供了getOwnPropertyNames方法,可以獲取到一個(gè)對(duì)象的所有自身屬性.

(function () { var propertys = Object.getOwnPropertyNames(window); alert(propertys.length);  //72 alert(propertys.join("/n")); //Object,Function,eval等等})()

3.遍歷可枚舉的自身屬性和繼承屬性

繼承屬性怎么遍歷,你應(yīng)該知道,就是最常用的for in遍歷

(function () { var getEnumPropertyNames = function (obj) {  var props = [];  for (prop in obj) {   props.push(prop);  }  return props; } var propertys = getEnumPropertyNames(window); alert(propertys.length);  //185 alert(propertys.join("/n")); //addEventListener,onload等等})()

4.遍歷所有的自身屬性和繼承屬性

這種遍歷主要用在各種js調(diào)試工具的代碼補(bǔ)全功能上.比如Firebug的.

(function () { var getAllPropertyNames = function (obj) {  var props = [];  do {   props = props.concat(Object.getOwnPropertyNames(obj));  } while (obj = Object.getPrototypeOf(obj));  return props; } var propertys = getAllPropertyNames(window); alert(propertys.length);   //276 alert(propertys.join("/n"));  //toString等})()

以上這篇淺談JavaScript中的屬性:如何遍歷屬性就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 烟台市| 通化县| 寿阳县| 沧州市| 方正县| 江源县| 清涧县| 大丰市| 泾川县| 平安县| 彭阳县| 宜良县| 靖安县| 东丽区| 东安县| 乌拉特后旗| 宁陕县| 桐梓县| 武宁县| 日喀则市| 惠东县| 大埔区| 仙桃市| 孙吴县| 新闻| 陆良县| 通海县| 阜平县| 高尔夫| 和田县| 南澳县| 井冈山市| 沛县| 河北省| 博白县| 曲阳县| 阿鲁科尔沁旗| 江阴市| 文成县| 丽水市| 吉水县|