Object.keys()方法 返回物件屬性陣列
阿新 • • 發佈:2020-12-19
MDN語法
Object.keys(obj)
引數obj:要返回其列舉自身屬性的物件。
返回值:一個表示給定物件的所有可列舉屬性的字串陣列。
1.傳入一個物件,返回的的是所有屬性值
var obj2={
"b":5,
"7":8,
"6":8,
"a":6,
"8":9,
"c":10,
"-3":5
}
console.log(Object.keys(obj2)) // ["6", "7", "8", "b", "a", "c", "-3"]
可以看到,返回值數組裡數字在前面,且會自動排序
這是因為Object.keys
在內部會根據屬性名key
- 如果屬性名的型別是
Number
,那麼Object.keys
返回值是按照key
從小到大排序 - 如果屬性名的型別是
String
,那麼Object.keys
返回值是按照屬性被建立的時間升序排序。 - 如果屬性名的型別是
Symbol
,那麼邏輯同String
相同
(負數是作為字串處理的,也是按照建立的時間順序)
2.傳入一個數組,返回的是索引值
var arr=[2,5,7,3,"t","7",6]
console.log(Object.keys(arr)) //["0", "1", "2", "3", "4", "5", "6"]
3.傳入一個字串,返回的是索引值
var str="hello sansan" console.log(Object.keys(str)) //["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"]
4.建構函式,返回空陣列或屬性值
function sansan(width,long,height){ this.width=width; this.long=long; this.height=height; this.area=function(){ return this.height*this.width*this.long; } } console.log(Object.keys(sansan)) //[] var xiamu=new sansan(2,3,4) console.log(Object.keys(xiamu)) //["width", "long", "height", "area"]
參考部落格
注意
在ES5裡,如果此方法的引數不是物件(而是一個原始值),那麼它會丟擲 TypeError。在ES2015中,非物件的引數將被強制轉換為一個物件。
Object.keys("foo");
// TypeError: "foo" is not an object (ES5 code)
Object.keys("foo");
// ["0", "1", "2"] (ES2015 code)