“下面的值刚刚被评估”,这是什么意思?

时间:2019-09-08 16:21:39

标签: javascript prototype developer-console

伙计! 我试图列出使用new关键字创建实例时幕后发生的事情。

这是我的代码的样子

function F() {}
let f1 = new F()
f1.__proto__

到目前为止,我了解到使用new时,将创建一个包含以下两件事的新对象

{
  constructor: f <-- this is the constructor function F(), referring to itself
  __proto__: Object <-- since this is not sub-classing any other Object, every object except Object inherits from Object.prototype
}

这种理解正确吗?

运行此程序时,我会在Google Developer Console中获得以下内容

enter image description here

Value below was evaluated just now是什么意思?

谢谢

2 个答案:

答案 0 :(得分:1)

这只是说控制台在按下扩展图标时评估了对象。这是一个测试。

  1. 在控制台中输入o = {}。输出将类似于>{}。请勿扩展!

  2. o对象添加属性。 o.x = 1

  3. 现在返回并扩展先前的输出。创建该输出后,它将明显具有您添加的x属性。但是输出仍然具有x值。

因为...

该值是在您扩展输出时(而不是在创建时间)评估的。

答案 1 :(得分:0)

  

下面的值刚刚被评估

基本上意味着您所看到的是在控制台中查看对象时该对象的值。 如果您在应用代码中使用console.log(someObject),这是有用的信息。

告诉您的是,您在浏览器控制台中看到的是someObject的当前值,而不一定是执行console.log时该对象具有的值(该对象那时代码执行可能有所不同。

基本上,这是因为它只是引用对象,并且只有在控制台窗口中将其展开后,属性/方法才可见。