我尝试使用Object's
方法打印prototype
个属性(不包括Object.keys()
属性)。
var obj = {
name : "Jane"
}
keys = Object.keys(obj); //["name"]
当我做的时候
console.log("length" in keys) //It is printing true?
我相信"length"
来自prototype
。为什么它存在于keys
数组中?
答案 0 :(得分:2)
Object.keys()
会返回Array
和Arrays always have length property。
来自Mozilla文档。
Object.keys()方法返回给定对象自己的可枚举属性的数组,其顺序与for ... in循环提供的顺序相同(不同之处在于for-in循环枚举原型链中的属性。)
答案 1 :(得分:2)
为什么它存在于keys数组中?
它存在于keys array
中,因为keys
是数组的实例,而数组具有属性length
。
这相当于说
if ( "length" in keys)
{
console.log(true)
}
此处也查看in operator文档。
如果指定的属性在,则in运算符返回true 指定的对象。