函数嵌套在原型中

时间:2017-08-28 14:46:07

标签: javascript inheritance

问题1

我正在尝试JS中的对象和构造函数的原型,当我注意到:

function f(a) {
  this.a = a;
  this.x = 1
}

function f2(a) {
  this.a = a;
  this.x = 4
}

f2.__proto__ = f(9);

var of2 = new f2(4);

以某种方式使f2()嵌套在prototype -> constructor中,所以我有无限的嵌套(如下所示):

enter image description here

请问有人解释这种行为吗?或者这只是一个错误,这是由工具引起的?

问题2 : 所以,如果这是正常的,那么它在内存中是如何工作的?它是在处理引用,还是只是将原型插入构造函数,构造函数来构建原型等等?如果第二个假设是真的,为什么我的计算机内存仍然没有燃烧?

2 个答案:

答案 0 :(得分:1)

这是正常行为。类似的东西:

function f() {
 this.a=0;
}

var obj= new f();

导致相同的循环:obj的构造函数是f(),并且此构造函数的原型具有f()作为构造函数,并且其原型具有f()as ... < / p>

答案 1 :(得分:1)

相同的无限嵌套
look to the right ->             <- look to the left

所以实际上它非常有限;)

prototype ->                   <- constructor

(提示:这个答案最适合300px的智能手机......;))