轉: JavaScript 擷取對象屬性和方法

來源:互聯網
上載者:User

標籤:數組   代碼   eve   als   擷取對象   key   object   too   turn   

 一、擷取對象屬性和方法 Object.keys()for in 返回對象的 可枚舉屬性和方法名稱數組Object.getOwnPropertyNames() 返回的 數組的所有屬性( 可枚舉或不可枚舉)直接找到給定對象。
 1     // 建立一個對象的構造方法 2     function myObj(name, attr) { 3         this.name = name; 4         this.attr = attr; 5  6         this.sayHi = function () { 7             return ‘hi everyone!!!‘; 8         } 9     }10 11     // 建立一個對象12     var myTester = new myObj("shinejaie", 1)13     // 擷取直接在對象上定義(可枚舉)的屬性和方法14     var arr = Object.keys(myTester);15     console.log(‘arr‘, arr); // 輸出 arr ["name", "attr", "sayHi"]16 17     // 返回的數組的所有屬性(可枚舉或不可枚舉)直接找到給定對象。18     console.log("attr", Object.getOwnPropertyNames(myTester)); // 輸出 attr ["name", "attr", "sayHi"]19 20     // 在 Object 原型上增加一個屬性21     Object.prototype.newShine = "it‘s me";22 23     // 返回可枚舉屬性一直找到該對象的原型鏈24     for (var i in myTester) {25         console.log(i);26     }27     // 輸出 name,attr,sayHi,newShine28 29     // 返回直接定義在該對象上的可枚舉屬性30     for (var i in myTester) {31         if (myTester.hasOwnProperty(i)) {32             console.log(i);33         }34     }35     // 輸出 name,attr,sayHi
二、 Object.keys()、Object.getOwnPropertyNames()、for...in...對比
 1     // 不可枚舉的對象屬性 2     var nonenum = Object.create({}, { 3         getFoo: { 4             value: function () { 5                 return this.foo; 6             }, 7             enumerable: false 8         } 9     });10     nonenum.foo = 1;11     nonenum.asj = 2;12 13     // 擷取對象可枚舉或不可枚舉的屬性14     console.log(Object.getOwnPropertyNames(nonenum).sort()); // 輸出 ["asj", "foo", "getFoo"]15 16     // 擷取對象可枚舉的屬性17     console.log(Object.keys(nonenum).sort()); // 輸出 ["asj", "foo"]18 19     // 返回直接定義在該對象上的可枚舉屬性20     for (var i in nonenum) {21         if (nonenum.hasOwnProperty(i)) {22             console.log(i); // 輸出 foo asj23         }24     }
 三、分別擷取JavaScript對象屬性名稱和方法名
 1     // 建立一個對象的構造方法 2     function myObj(name, attr) { 3         this.name = name; 4         this.attr = attr; 5  6         this.sayHi = function () { 7             return ‘hi everyone!!!‘; 8         } 9     }10 11     // 建立一個對象12     var myTester = new myObj("shinejaie", 1)13 14     // 擷取對象方法15     for (var i in myTester) {16         if (myTester.hasOwnProperty(i) && typeof myTester[i] == "function") {17             console.log("對象方法: ", i, "=", myTester[i])18         }19     }20     // 輸出 對象方法: sayHi = () { return ‘hi everyone!!!‘; }21 22     // 擷取對象屬性23     for (var i in myTester) {24         if (myTester.hasOwnProperty(i) && typeof myTester[i] != "function") {25             console.log("對象屬性: ", i);26         }27     }28     // 輸出 對象屬性: name 對象屬性: attr

 

轉: JavaScript 擷取對象屬性和方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.