![]() |
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 实现经典传承
|
![]() |
Fernando Chu · 一个变量有多个可能的类?[关闭] 5 月前 |
![]() |
Amaterastis · 基类接受子类和内部子类的模板参数 5 月前 |
![]() |
Rishab Negi · 这个关键字在抽象类中是如何工作的 6 月前 |
![]() |
dEmigOd · 类层次结构中的运算符重载解析 6 月前 |
![]() |
TableTopRug · 如何从Kotlin中的密封类继承? 6 月前 |
![]() |
hasdrubal · 抽象基类函数指针python 10 月前 |
![]() |
Josh · 通过反思访问孩子的财产 10 月前 |