2

谁能告诉我为什么在这段代码中:

var originalfunc = function() {
    this.run(this)
};

originalfunc.prototype.run = function(basefunc) {
    this.basefunc = basefunc;
    console.log(this);
};

var r = new originalfunc();

产生一个看起来是无限的原型链:

在此处输入图像描述

为什么会这样?我知道我将 originalfunc obj 分配为运行原型的属性,但我只这样做了一次。

在这里工作小提琴:

http://jsfiddle.net/YmThL/

4

1 回答 1

11

您设置this.basefunc为对 . 引用的对象的引用this

构造函数调用“run”,将值传递this给它。此时,this指的是正在建设的新对象。“run”函数将同一对象上的“basefunc”属性设置this为参数,即对象。

效果就像构造函数只是做了一样:

this.basefunc = this;
于 2013-10-31T20:33:07.600 回答