如何检查Node REPL中的默认对象属性

时间:2015-05-11 07:01:16

标签: javascript node.js object prototype

我正在使用Node REPL。当我们在这里定义一个constructor函数时:

function Rabbit() { }

它是prototype对象,Rabbit.prototype具有constructor属性,可以像这样引用:

>> Rabbit.prototype.constructor
   [Function: Rabbit]

constructor属性未列在Rabbit.prototype对象中,但执行Rabbit.prototype.constructorRabbit.prototype["constructor"]会恰当地提供此信息。

>> Rabbit.prototype
   {}

a)如何查看constructorhasOwnPropertytoStringvalueOf等默认属性?在使用控制台浏览器中,我得到一个不错的小下拉列表。我期待某种dir命令。

b)当我在控制台中触发inherited时,为什么没有显示Rabbit.prototype属性?是否需要,因为我们只想显示用户添加的内容?

c)他们在哪里实际定义了ObjectFunction

编辑: - 这些似乎已添加到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来递归遍历原型链,以列出拥有的继承的

问候。

1 个答案:

答案 0 :(得分:0)

是的,需要通过应用prototype chain向下移动Object.getOwnPropertyNames()以获取不可枚举的属性列表。从这里得到它:

Is it possible to get the non-enumerable inherited property names of an object?