在这个JavaScript中,内存中存在哪些对象

What objects are present in memory in this JavaScript?

本文关键字:存在 对象 内存 JavaScript      更新时间:2023-09-26

给定以下代码,在第1行和第2行之后的内存中有哪些用户定义的对象?

function MyCtor() {}
//At this point a single user-defined object exists, the constructor function `MyCtor`
var v = new MyCtor();
//Here in addition to the constructor function defined above we have `v` (a `MyCtor` instance) and another instance of `MyCtor` acting as `v.__proto__`. So that is 3 objects in total.

第一行之后有两个对象。一个是函数对象,一个是函数的原型对象。

(好吧,函数已经在代码解析时创建了,所以对象甚至在代码开始执行之前就存在了。更正确的说法是,第一行导致两个对象存在。

第二行之后只有一个对象,即对象的实例。对象的__proto__属性不包含该对象的另一个实例,它是构造函数的原型对象的引用。

的例子:

function MyCtor() {}
console.log(MyCtor.prototype);
var v = new MyCtor();
console.log(v.__proto__);
console.log(MyCtor.prototype === v.__proto__);
输出:

MyCtor { }
MyCtor { }
true

演示:http://jsfiddle.net/323bg/