鉴于以下代码,第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.
答案 0 :(得分:4)
在第一行之后有两个对象。有函数对象,函数有原型对象。
(好吧,在解析代码时已经创建了该函数,所以在代码开始执行之前对象就存在了。更正确的是第一行会导致两个对象存在。)
在第二行之后,只有一个对象,即对象的实例。对象的__proto__
属性不包含对象的另一个实例,它是对构造函数的原型对象的引用。
示例:
function MyCtor() {}
console.log(MyCtor.prototype);
var v = new MyCtor();
console.log(v.__proto__);
console.log(MyCtor.prototype === v.__proto__);
输出:
MyCtor { }
MyCtor { }
true