代码之家  ›  专栏  ›  技术社区  ›  BVernon

为什么这本书建议您可以重载javascript构造函数?

  •  -1
  • BVernon  · 技术社区  · 4 年前

    虽然我不是Javascript专家,但我对它非常熟悉,并且已经使用了多年。据我所知,没有能力重载函数或构造函数(从语言支持的角度来看;当然,您基本上可以模拟它)。

    所以我想买一本MCSE和一本学习书,我将参加其中一个考试,我看到了附件中的图片。似乎这本书建议Javascript根据您是用0还是3个参数调用它来选择正确的构造函数(没有参数的构造函数,还是用3个参数的构造函数)。对吗?我没想到Javascript会这么做。我错过了什么?

    Snippet from book

    1 回复  |  直到 4 年前
        1
  •  2
  •   tadman    4 年前

    它定义了 Book() 然后立即重新定义它,忽略以前的定义。我不知道你为什么要这么做,考虑到这段代码已经过时了,ES6引入了 class 这使得这一切都无关紧要,它现在可能只是一个学术观点。

    例如:

    function F() { return 0; }
    function F(a) { return 1; }
    

    将他们的例子简化为:

    var a = [ F(), F('test') ];
    

    他们声称 [ 0, 1 ] 但事实上很明显 [ 1, 1 ] 自从 整个函数被重新定义 .

    这段代码有很多地方值得怀疑。

    代码“工作”的原因是,如果不指定所有参数,JavaScript根本不在乎,它们只剩下 undefined . 那是打电话给 F() F(undefined) ,或者在他们的示例中,第二个版本运行并仅设置 未定义 去那三个地方。

    我有一种偷偷的怀疑,是谁写的,仍然在思考一个像C++这样的语言,函数重载,JavaScript没有的东西。