函数Obj1(param){this.test1 = param || 1; }
function Obj2(param, par) { this.test2 = param; this.ob = Obj1; this.ob(par); }
现在为什么我这样做:
alert(new Obj2(44,55).test1);
输出是55?如果我没有通过原型链链接,怎么能'查看'test1是一个Obj2 istance?
谢谢
嗯,目前还不清楚你想要什么但发生这种情况的原因是因为:
this.ob = Obj1;
您将Obj1方法添加到Obj2的对象实例,并在此处使用它:
this.ob(par);
方法Obj1中的"this"的上下文是Obj2实例.所以该实例现在有一个test1成员.
与继承无关,但它有点像混合.记住在JS函数中是第一类对象.
让我们将Obj1视为一种功能.所以,当你这样做的时候
function Obj2(param, par) { this.test2 = param; this.ob = Obj1; this.ob(par); }
您的代码与以下代码完全相同:
function Obj2(param, par) { this.test2 = param; this.ob = function (param) { this.test1 = param || 1; } this.ob(par); }