当前位置:  开发笔记 > 编程语言 > 正文

javascript调用函数里面的另一个谜

如何解决《javascript调用函数里面的另一个谜》经验,为你挑选了2个好方法。

函数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?

谢谢



1> annakata..:

嗯,目前还不清楚你想要什么但发生这种情况的原因是因为:

this.ob = Obj1;

您将Obj1方法添加到Obj2的对象实例,并在此处使用它:

this.ob(par); 

方法Obj1中的"this"的上下文是Obj2实例.所以该实例现在有一个test1成员.

与继承无关,但它有点像混合.记住在JS函数中是第一类对象.



2> 小智..:

让我们将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);
}

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有