1
2
我一直在使用类似于Dean Edward的base.js模型的东西。 http://dean.edwards.name/weblog/2006/03/base/ |
2
2
原型通过 Object.extend() 功能。 然而,有人可能认为,试图在一种不支持类的语言上强加基于类的继承是“当你只有一把锤子,整个世界就像一颗钉子”的一个例子。 |
3
1
谢谢你的评论。然而,问题的解决办法是在对雇主管理者声明进行更改时发现的:
显然,JavaScript支持两种不同类型的继承,基于函数和基于原型。基于函数的版本是我最初发布的版本,但由于EmployerManager看不到作为ProfileManager原型一部分的LoadData方法,因此无法工作。 这个新的例子是基于原型的,现在可以工作了。EmployerManager现在是ProfileManager的一个实例。 |
4
0
在代码中,PM是EmployerManager的一个实例,它具有profileManager的超类。这对我来说似乎是倒退。ProfileManager不应该有一个EmployerManager的超类吗? |
5
0
我只是想插句话,虽然JavaScript是一种面向对象的语言,但它没有其他流行OO语言中常见的许多特性。相反,它还有许多其他流行的OO语言所没有的特性。 正如您已经发现的,继承是通过原型对象而不是通过类继承来管理的。但是,在使用“instanceof”运算符时,不会检查原型对象。这意味着JavaScript不支持多态性。至少不是开箱即用。 您可以找到一些库,它们可以使JavaScript符合您过去使用的OOP模型;如果您深陷其中,这可能是最好的解决方案。(虽然在使用“instanceof”进行检查时,没有库会使javascript对象具有多态性;可能需要IsInstanceof函数。)或者您可以选择另一种符合OOP模型的语言,但您可能在浏览器中工作,因此这显然不是一个选项。或者你可以回答这个问题,“如果没有多态性,我如何解决我的问题?” |
6
0
你应该注意到 same question has been asked (由我)。看看那篇文章的答案。 |
7
0
你可以使用 新的 或 Object.create 实现经典传承
|
Softly · 单选按钮未按预期取值 1 年前 |
SlickRed · 我无法使用JS关注HTML元素 1 年前 |
assembler · Nextjs没有处理发布请求 1 年前 |
BADRUM · 执行两个获取功能后,如何导航回页面? 1 年前 |
Toniq · javascript为php保存多维数组 1 年前 |