錦州市廣廈電腦維修|上門維修電腦|上門做系統(tǒng)|0416-3905144熱誠服務(wù),錦州廣廈維修電腦,公司IT外包服務(wù)
topFlag1 設(shè)為首頁
topFlag3 收藏本站
 
maojin003 首 頁 公司介紹 服務(wù)項(xiàng)目 服務(wù)報(bào)價(jià) 維修流程 IT外包服務(wù) 服務(wù)器維護(hù) 技術(shù)文章 常見故障
錦州市廣廈電腦維修|上門維修電腦|上門做系統(tǒng)|0416-3905144熱誠服務(wù)技術(shù)文章
JS獲取對(duì)象“屬性和方法”的方法

作者: 佚名  日期:2018-05-24 11:17:58   來源: 本站整理

JS獲取對(duì)象“屬性和方法”的方法

平時(shí)在寫的代碼過程中,經(jīng)常會(huì)遇到對(duì)對(duì)象Object的數(shù)據(jù)處理。而在對(duì)對(duì)象的數(shù)據(jù)處理中,操作最頻繁的是“數(shù)據(jù)引用”、“值的修改”、“獲取關(guān)鍵字(屬性)”。平時(shí)最煩的也是“獲取關(guān)鍵字”,經(jīng)常忘記怎么去獲取,這里做一下整理。

既然要"獲取關(guān)鍵字",那么得首先有一個(gè)對(duì)象才行。創(chuàng)建對(duì)象的方式很多,我自己慣用的方式有三種:

1、通過原始構(gòu)造函數(shù) new Object();創(chuàng)建一個(gè)對(duì)象,然后賦值;

var testObj= new Object(); testObj.name = "shangguan"; testObj.age= 25; testObj.action = function () {     return this.name; }

2、直接新建對(duì)象,不通過構(gòu)造函數(shù)(而且直接新建速度比構(gòu)造器還快一些!)

var testObj={}; testObj.name = "shangguan"; testObj.age= 25; testObj.action = function () {     return this.name; };

3、重載構(gòu)造器,讓構(gòu)造器在構(gòu)造對(duì)象時(shí)按預(yù)定的屬性構(gòu)建。

復(fù)制代碼
// 創(chuàng)建一個(gè)對(duì)象的構(gòu)造方法
function newObj(name, age) {     this.name = name;     this.age= age;     this.action = function () {         return this.name;     } } // 創(chuàng)建一個(gè)對(duì)象
var testObj= new newObj("shangguan", 25);
復(fù)制代碼

 

1、對(duì)象內(nèi)置屬性方法:Object.keys();該方法返回一個(gè)數(shù)組,數(shù)組內(nèi)包括對(duì)象內(nèi)可枚舉屬性以及方法名稱。數(shù)組中屬性名的排列順序和使用 for...in 遍歷該對(duì)象時(shí)返回的順序一致。

  // 通過調(diào)用Object.keys()方法,獲取對(duì)象上已定義(可枚舉)的屬性和方法

  var keys= Object.keys(testObj);   console.log(keys); // 輸出 keys ["name", "age", "action"]

   

  注意:在ES5里,如果此方法的參數(shù)不是對(duì)象(而是一個(gè)原始值),那么它會(huì)拋出 TypeError。而在ES2015中,非對(duì)象的參數(shù)將被強(qiáng)制轉(zhuǎn)換為一個(gè)對(duì)象。

  Object.keys("testObj");   // TypeError: "testObj" is not an object (ES5 code)
  Object.keys("testObj");   //["name", "age", "action"]              (ES2015 code)

2、Object.getOwnPropertyNames():方法返回一個(gè)指定對(duì)象所有自身屬性的屬性名(包括不可枚舉屬性但不包括Symbol值作為名稱的屬性)組成的數(shù)組

  該數(shù)組是 obj自身擁有的枚舉或不可枚舉屬性名稱字符串集合。 數(shù)組中枚舉屬性的順序與通過 for...in 循環(huán)(或 Object.keys())迭代該對(duì)象屬性時(shí)一致。數(shù)組中不可枚舉屬性的順序未定義。

  var keys = Object.getOwnPropertyNames(testObj);   console.log(keys);  // 輸出 keys ["name", "age", "action"]

   

3、當(dāng)然除了以上兩個(gè)外,還有最原始的 for...in 循環(huán)(估計(jì)是平時(shí)循環(huán)用的多了,反倒是這個(gè)不怎么用!)

  var keys =[];   for(var i in testObj){       keys.push(i);   }   console.log(keys);   // keys ["name", "age", "action"]

  

下面通過一個(gè)實(shí)例,直觀說明三者之間的區(qū)別:

復(fù)制代碼
var testObj = Object.create({}, {     getFoo: {         value: function () {             return this.foo;         },         enumerable: false     } }); testObj.name = "shangguan"; testObj.age = 25; testObj.action = function(){   return this.name; }; function getKeys() {     // 獲取對(duì)象可枚舉和不可枚舉的屬性
    console.log(Object.getOwnPropertyNames(testObj));   //輸出:["getFoo", "name", "age", "action"]
    // 獲取對(duì)象可枚舉的屬性
    console.log(Object.keys(testObj));  //輸出:["name", "age", "action"]
    // 獲取對(duì)象可枚舉的屬性
    for (var i in testObj) {         console.log(i);     //輸出 name,age,action
    }     //返回直接定義在該對(duì)象上的可枚舉屬性,非繼承。通過hasOwnProperty()方法可以將那些屬性是對(duì)象自身(非繼承)屬性篩選出來,從而將不可枚舉屬性排除出去
    //obj.hasOwnProperty(prop): prop要檢測(cè)的屬性,字符串 名稱或者 Symbol。     返回值:用來判斷某個(gè)對(duì)象是否含有指定的屬性Boolean值
    for (var i in testObj) {         if(testObj.hasOwnProperty(i)) {             console.log(i);         }    //輸出 name,age,action
    } }
復(fù)制代碼

  

  總結(jié):如果只需要獲取可枚舉屬性,那么Object.keys()for...in循環(huán)迭代即可(Object.getOwnPropertyNames()也可以獲取到原型鏈上的可枚舉屬性,不過需要通過hasOwnProperty()方法過濾掉不可枚舉屬性)。



熱門文章
  • 機(jī)械革命S1 PRO-02 開機(jī)不顯示 黑...
  • 聯(lián)想ThinkPad NM-C641上電掉電點(diǎn)不...
  • 三星一體激光打印機(jī)SCX-4521F維修...
  • 通過串口命令查看EMMC擦寫次數(shù)和判...
  • IIS 8 開啟 GZIP壓縮來減少網(wǎng)絡(luò)請(qǐng)求...
  • 索尼kd-49x7500e背光一半暗且閃爍 ...
  • 樓宇對(duì)講門禁讀卡異常維修,讀卡芯...
  • 新款海信電視機(jī)始終停留在開機(jī)界面...
  • 常見打印機(jī)清零步驟
  • 安裝驅(qū)動(dòng)時(shí)提示不包含數(shù)字簽名的解...
  • 共享打印機(jī)需要密碼的解決方法
  • 圖解Windows 7系統(tǒng)快速共享打印機(jī)的...
  • 錦州廣廈電腦上門維修

    報(bào)修電話:13840665804  QQ:174984393 (聯(lián)系人:毛先生)   
    E-Mail:174984393@qq.com
    維修中心地址:錦州廣廈電腦城
    ICP備案/許可證號(hào):遼ICP備2023002984號(hào)-1
    上門服務(wù)區(qū)域: 遼寧錦州市區(qū)
    主要業(yè)務(wù): 修電腦,電腦修理,電腦維護(hù),上門維修電腦,黑屏藍(lán)屏死機(jī)故障排除,無線上網(wǎng)設(shè)置,IT服務(wù)外包,局域網(wǎng)組建,ADSL共享上網(wǎng),路由器設(shè)置,數(shù)據(jù)恢復(fù),密碼破解,光盤刻錄制作等服務(wù)

    技術(shù)支持:微軟等
    主站蜘蛛池模板: 粉嫩大学生无套内射无码卡视频 | 国产精品爆乳奶水无码视频| 亚洲精品无码你懂的网站| 国产免费无码AV片在线观看不卡 | 免费无遮挡无码视频在线观看| 成人无码WWW免费视频| 中文字幕人成无码人妻综合社区| 国产强伦姧在线观看无码| 无码国产乱人伦偷精品视频| 国产午夜无码片在线观看影院| 免费无码又爽又刺激高潮视频| 中文字幕无码久久人妻| 日本无码一区二区三区白峰美| 无码人妻少妇色欲AV一区二区| 亚洲成a人无码av波多野按摩| 99久久人妻无码精品系列| 亚洲gv猛男gv无码男同短文| 久久国产加勒比精品无码| 亚洲中文字幕久久精品无码VA | 国产AV无码专区亚洲A∨毛片| 久久久久精品国产亚洲AV无码| 日韩av无码中文无码电影| 亚洲AV无码一区二区三区鸳鸯影院| 亚洲AV永久无码精品一百度影院 | 亚洲中文无码线在线观看| 久久无码av三级| 国产成人无码AV一区二区在线观看| 最新亚洲人成无码网站| 亚洲AV日韩AV永久无码色欲 | 无码精品人妻一区| 国产精品免费看久久久无码| 无码无套少妇毛多18PXXXX| 无码国产精成人午夜视频不卡| 亚洲日韩国产AV无码无码精品| 99精品国产在热久久无码 | 人妻无码精品久久亚瑟影视| 亚洲国产精品无码第一区二区三区| 白嫩少妇激情无码| 国产精品无码一区二区在线| 人妻aⅴ中文字幕无码| 无码国产精品一区二区高潮|