任何人都可以在此代码中告诉我原因:
var originalfunc = function() {
this.run(this)
};
originalfunc.prototype.run = function(basefunc) {
this.basefunc = basefunc;
console.log(this);
};
var r = new originalfunc();
制作一个看起来无限的原型链:
为什么会这样?我知道我将原始函数obj指定为运行原型的属性,但我只做了一次。
在这里工作小提琴:
答案 0 :(得分:8)
您将this.basefunc
设置为this
引用的对象的引用。
构造函数调用“run”,将值this
传递给它。此时,this
指的是正在构建的新对象。 “run”函数在同一个对象上设置“basefunc”属性(因为this
也会在对“run”的调用中将其引用到参数,即对象。
效果与构造函数完全相同:
this.basefunc = this;