Object.keys()

在讀別人的代碼的時(shí)候發(fā)現(xiàn)了使用了Object.keys(obj)的函數(shù),因此記錄下用法

Object.keys(obj)會返回一個(gè)由傳入對象的可枚舉屬性 組成的數(shù)組,數(shù)組名的排列順序和使用for...in...循環(huán)遍歷該對象返回的順序一致。
區(qū)別: for...in....循環(huán)還會枚舉其原型鏈上的屬性

語法

Object.keys(obj)
obj:傳入的對象
返回值:傳入對象可枚舉屬性組成的數(shù)組

例子

//數(shù)組
var  a=["a","b","c"]
Object.keys(a)       //輸出["0","1","2"]

//對象
var obj={a:1,b:2,c:3}
Object.keys(obj)    //輸出["a","b","c"]

//不可枚舉屬性
var obj1={
    {},
    {getFoo:function(){value:function(){return this.foo}}}
}
obj1.foo="1"
Object.keys(obj1) //輸出foo

注意

在ES5中,如果此方法的參數(shù)不是一個(gè)對象,而是一個(gè)原始值,則會拋出TypeError,在ES2015中,非對象的參數(shù)會強(qiáng)制轉(zhuǎn)換為一個(gè)對象

與for... in..的區(qū)別

在上文中對比了Object.keys()和for...in..下面簡單的說明下for..in..的使用

語法

for(variable in object){...}

參數(shù)

variable:每次迭代時(shí),將不同的屬性名分配給變量
object:需要迭代屬性的對象

描述

for..in..枚舉只遍歷可枚舉的屬性,循環(huán)將迭代對象的所有可枚舉屬性和從他的構(gòu)造函數(shù)的prototype繼承而來

注意

for in不應(yīng)該用來迭代一個(gè)下標(biāo)很重要的Array,不能保證返回的一定是按照循序的索引,但是他會返回所有可枚舉的屬性,包括非整數(shù)名稱和繼承的

例子

var a={a:'1',b:'2',c:'3'}
function test(){this.color='red'}
test.prototype=a
var obj=new test()
var obj=new test()  //輸出 color  a  b  c
Object.keys(obj)    //輸出["color"]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容