有人能告诉我为什么在这段代码中:
var originalfunc = function() {
this.run(this)
};
originalfunc.prototype.run = function(basefunc) {
this.basefunc = basefunc;
console.log(this);
};
var r = new originalfunc();生成一个看起来是无限的原型链:

为什么会发生这种情况?我知道我将原始函数obj指定为运行原型的属性,但我只做过一次。
在这里工作小提琴:
http://jsfiddle.net/YmThL/
发布于 2013-10-31 20:33:07
将this.basefunc设置为对this引用的对象的引用。
构造函数调用"run",将值this传递给它。在这一点上,this指的是正在构建的新对象。"run“函数在同一个对象上设置"basefunc”属性(因为this也会在该调用中引用它以"run")到参数,该参数就是该对象。
其效果与构造函数简单地做了相同的事情:
this.basefunc = this;https://stackoverflow.com/questions/19716099
复制相似问题