在js for in 循环中,使用数组的push方法获取对象的属性,结果却未改变数组

如题
不想用jquery的getOwnPropertyNames

var getProperty = function(obj) {
    var nArr = [];
    for (var i in obj) {
        nArr.push[i];
    }
    console.log(nArr);
    return nArr;
}
getProperty({a:1,b:2})

最后返回的结果是[];
如果换成

var getProperty = function(obj) {
    var nArr = [],
        k = 0;
    for (var i in obj) {
        nArr[k] = i;
        k++;
    }
    console.log(nArr);
    return nArr;
}
getProperty({a:1,b:2});

则可以返回正确的结果['a','b'],为何

阅读 5k
4 个回答

nArr.push(i)
括号打错!!!!

JS 的 for in 存在 hasOwnProperty 的坑。
你想要返回 ['a', 'b'],只需:

Object.keys(obj)

即可(支持 IE9+)。

nArr.push[i];这个你确定运行不会报错?

新手上路,请多包涵

怎么取值呢

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题