Javascript Object.keys(my_obj)在array中返回my_obj的keys(即可枚举属性)。
但是Object.keys(my_obj)array中的循环返回my_obj的方法。
有人了解这种行为吗?
Object.prototype.log_key = function() {
keys = Object.keys(this)
console.log('log Object.keys() array return enumerable property', keys)
for (const k in keys) {
console.log('loop in Object.keys() array return method', k)
}
}
var my_obj = {
testkey: 'testvalue'
}
my_obj.log_key();
输出:
log Object.keys() array return enumerable property [ 'testkey' ]
loop in Object.keys() array return methods 0
loop in Object.keys() array return methods log_key
for...in
循环为您提供数组的索引。这就是为什么登录k
时得到0的原因。它是数组中的第一个也是唯一的项目。
如果需要实际的项目,则可以改用for...of
。