伙计!
我试图列出使用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中获得以下内容
Value below was evaluated just now
是什么意思?
谢谢
答案 0 :(得分:1)
这只是说控制台在按下扩展图标时评估了对象。这是一个测试。
在控制台中输入o = {}
。输出将类似于>{}
。请勿扩展!
向o
对象添加属性。 o.x = 1
现在返回并扩展先前的输出。创建该输出后,它将明显具有您添加的x
属性。但是输出仍然具有x
值。
因为...
该值是在您扩展输出时(而不是在创建时间)评估的。
答案 1 :(得分:0)
下面的值刚刚被评估
基本上意味着您所看到的是在控制台中查看对象时该对象的值。
如果您在应用代码中使用console.log(someObject)
,这是有用的信息。
告诉您的是,您在浏览器控制台中看到的是someObject
的当前值,而不一定是执行console.log
时该对象具有的值(该对象那时代码执行可能有所不同。
基本上,这是因为它只是引用对象,并且只有在控制台窗口中将其展开后,属性/方法才可见。