我正在使用Node REPL。当我们在这里定义一个constructor
函数时:
function Rabbit() { }
它是prototype
对象,Rabbit.prototype
具有constructor
属性,可以像这样引用:
>> Rabbit.prototype.constructor
[Function: Rabbit]
此constructor
属性未列在Rabbit.prototype
对象中,但执行Rabbit.prototype.constructor
和Rabbit.prototype["constructor"]
会恰当地提供此信息。
>> Rabbit.prototype
{}
a)如何查看constructor
,hasOwnProperty
,toString
,valueOf
等默认属性?在使用控制台的浏览器中,我得到一个不错的小下拉列表。我期待某种dir
命令。
b)当我在控制台中触发inherited
时,为什么没有显示Rabbit.prototype
属性?是否需要,因为我们只想显示用户添加的内容?
c)他们在哪里实际定义了Object
或Function
?
编辑: - 这些似乎已添加到Object.prototype
。参考:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype
此外,
>> Object.getOwnPropertyNames(Object.prototype)
[ 'constructor',
'toString',
'toLocaleString',
'valueOf',
'hasOwnProperty',
'isPrototypeOf',
'propertyIsEnumerable',
'__defineGetter__',
'__lookupGetter__',
'__defineSetter__',
'__lookupSetter__' ]
我们是否需要通过在每个对象上应用Object.getOwnPropertyNames
来递归遍历原型链,以列出拥有的和继承的?
问候。
答案 0 :(得分:0)
是的,需要通过应用prototype chain
向下移动Object.getOwnPropertyNames()
以获取不可枚举的属性列表。从这里得到它: