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

为什么这本书建议您可以重载javascript构造函数?,javascript,Javascript,虽然我不是Javascript专家,但我对它非常熟悉,并且已经使用多年了。据我所知,没有能力重载函数或构造函数(从语言支持的角度来看;当然,您基本上可以模拟它) 因此,我想获得一个MCSE,并为我将参加的其中一项考试翻阅一本学习手册,我看到了附件中包含的内容。这本书似乎建议Javascript根据您是使用0还是3个参数调用它来选择正确的构造函数(没有参数的构造函数,还是使用3个参数的构造函数)。是这样吗?我不认为Javascript做到了这一点。我错过了什么 定义Book(),然后立即重新定义,

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

因此,我想获得一个MCSE,并为我将参加的其中一项考试翻阅一本学习手册,我看到了附件中包含的内容。这本书似乎建议Javascript根据您是使用0还是3个参数调用它来选择正确的构造函数(没有参数的构造函数,还是使用3个参数的构造函数)。是这样吗?我不认为Javascript做到了这一点。我错过了什么

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

例如:

function F() { return 0; }
function F(a) { return 1; }
将其示例简化为:

var a = [ F(), F('test') ];
他们声称这将是
[0,1]
,但实际上是,而且显然是
[1,1]
,因为整个函数被重新定义

关于这段代码,有很多事情是非常可疑的

代码“起作用”的原因是,如果不指定所有参数,JavaScript根本不在乎,它们只剩下
未定义的
。这是对
F()的调用。
F(未定义)
相同,或者在他们的示例中,第二个版本运行并仅将
未定义的
设置为这三个属性


<>我有一个鬼鬼祟祟的怀疑:写的人仍然在用C++之类的语言思考,函数重载,JavaScript没有。javascript中没有重载,正如前面指出的那样,
Book
的后一个定义只是覆盖了前者。@tadman谢谢。我觉得这很奇怪,它“起作用”的唯一原因是因为它真的用3个参数调用了这个函数,没有任何参数。这本书是错的。大错特错。作者应该马上解决这个问题。这些考试中有很多都过时了。幸运的是,它没有涉及到关于C89或Windows3.1的问题。测试站点是否有一个“Netscape Navigator最佳浏览”的徽章,建议屏幕至少为800x600像素?我实际上在寻找更多最新的测试,但奇怪的是,似乎没有任何更新。不过这并不重要。我几乎可以不学习就通过考试,但总有一些关于大多数人从未使用过的功能的真正具体问题,或者只需要花5分钟在他们需要的时候通过谷歌搜索来学习。目前有更多的以JavaScript为重点的认证,尤其是与React、Vue或更常见的前端框架相关的认证。当然,但我不能用它来获得MCSE。