Object.keys()

作者: 骑着蜗牛去遛狗 | 来源:发表于2017-09-19 21:04 被阅读26次

    在读别人的代码的时候发现了使用了Object.keys(obj)的函数,因此记录下用法

    Object.keys(obj)会返回一个由传入对象的可枚举属性 组成的数组,数组名的排列顺序和使用for...in...循环遍历该对象返回的顺序一致。
    区别: for...in....循环还会枚举其原型链上的属性

    语法

    Object.keys(obj)
    obj:传入的对象
    返回值:传入对象可枚举属性组成的数组

    例子

    //数组
    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中,如果此方法的参数不是一个对象,而是一个原始值,则会抛出TypeError,在ES2015中,非对象的参数会强制转换为一个对象

    与for... in..的区别

    在上文中对比了Object.keys()和for...in..下面简单的说明下for..in..的使用

    语法

    for(variable in object){...}
    

    参数

    variable:每次迭代时,将不同的属性名分配给变量
    object:需要迭代属性的对象

    描述

    for..in..枚举只遍历可枚举的属性,循环将迭代对象的所有可枚举属性和从他的构造函数的prototype继承而来

    注意

    for in不应该用来迭代一个下标很重要的Array,不能保证返回的一定是按照循序的索引,但是他会返回所有可枚举的属性,包括非整数名称和继承的

    例子

    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"]
    

    相关文章

      网友评论

        本文标题:Object.keys()

        本文链接:https://www.haomeiwen.com/subject/rgygsxtx.html