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

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

JS獲取對象“屬性和方法”的方法

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

既然要"獲取關鍵字",那么得首先有一個對象才行。創建對象的方式很多,我自己慣用的方式有三種:

1、通過原始構造函數 new Object();創建一個對象,然后賦值;

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

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

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

3、重載構造器,讓構造器在構造對象時按預定的屬性構建。

復制代碼
// 創建一個對象的構造方法
function newObj(name, age) {     this.name = name;     this.age= age;     this.action = function () {         return this.name;     } } // 創建一個對象
var testObj= new newObj("shangguan", 25);
復制代碼

 

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

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

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

   

  注意:在ES5里,如果此方法的參數不是對象(而是一個原始值),那么它會拋出 TypeError。而在ES2015中,非對象的參數將被強制轉換為一個對象。

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

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

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

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

   

3、當然除了以上兩個外,還有最原始的 for...in 循環(估計是平時循環用的多了,反倒是這個不怎么用!)

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

  

下面通過一個實例,直觀說明三者之間的區別:

復制代碼
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() {     // 獲取對象可枚舉和不可枚舉的屬性
    console.log(Object.getOwnPropertyNames(testObj));   //輸出:["getFoo", "name", "age", "action"]
    // 獲取對象可枚舉的屬性
    console.log(Object.keys(testObj));  //輸出:["name", "age", "action"]
    // 獲取對象可枚舉的屬性
    for (var i in testObj) {         console.log(i);     //輸出 name,age,action
    }     //返回直接定義在該對象上的可枚舉屬性,非繼承。通過hasOwnProperty()方法可以將那些屬性是對象自身(非繼承)屬性篩選出來,從而將不可枚舉屬性排除出去
    //obj.hasOwnProperty(prop): prop要檢測的屬性,字符串 名稱或者 Symbol。     返回值:用來判斷某個對象是否含有指定的屬性Boolean值
    for (var i in testObj) {         if(testObj.hasOwnProperty(i)) {             console.log(i);         }    //輸出 name,age,action
    } }
復制代碼

  

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



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

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

    技術支持:微軟等
    主站蜘蛛池模板: 久久久久亚洲AV无码专区首JN| 亚洲熟妇无码一区二区三区导航| 日韩毛片无码永久免费看| 久久久g0g0午夜无码精品| 久久影院午夜理论片无码| 亚洲日韩激情无码一区| 无码人妻丰满熟妇区96| 亚洲?V无码成人精品区日韩 | 精品久久久久久无码人妻蜜桃| 国产日韩AV免费无码一区二区| 午夜不卡久久精品无码免费| 亚洲av无码有乱码在线观看| 中文字幕久久精品无码| 亚洲AV永久无码精品网站在线观看| 一区二区三区无码高清| 久久久久无码国产精品不卡| 色窝窝无码一区二区三区色欲 | 国产高清无码二区 | 粉嫩高中生无码视频在线观看| 无码AV天堂一区二区三区| 亚洲不卡无码av中文字幕| 亚洲精品无码久久久久APP| 人妻丰满熟妇AV无码区HD| 18禁无遮挡无码网站免费| 97免费人妻无码视频| 午夜福利av无码一区二区| 亚洲色中文字幕无码AV| 精品久久久久久无码国产| 人妻少妇伦在线无码| 国产精品无码无卡在线观看久| 亚洲Av无码一区二区二三区 | 中文无码精品一区二区三区| 亚洲精品久久无码av片俺去也| 亚洲国产日产无码精品| 无码国产色欲XXXX视频| 日韩精品少妇无码受不了| 熟妇无码乱子成人精品| 人妻丰满熟妇岳AV无码区HD| 亚洲av无码不卡| 久久午夜伦鲁片免费无码| 亚洲AV无码一区二区二三区入口|