![]() |
1
5
我建议使用以下模式
方法驻留在原型中是很重要的(因为性能原因,这无论如何都应该如此),因此可以通过调用超类的方法
与一些 syntactic sugar ,您可以使JS看起来像一种基于类的经典语言:
|
![]() |
2
4
道格拉斯·克罗克福德在这两方面都有很好的文章 classical 和 prototypal 在javascript中继承,这应该是很好的起点。 |
![]() |
3
1
好的,在javascript中复制类/实例样式系统的诀窍是您只能对实例使用原型继承。因此,您需要能够创建一个只用于继承的__non-instance_实例,并且让一个初始化器方法与构造函数本身分离。 这是我使用的最小系统(在添加虚饰之前),将一个特殊的一次性值传递给构造函数,让它在不初始化对象的情况下构造一个对象:
使用
用法相对简单,通常与Python样式的对象类似,只是语法稍显笨拙:
猴子修补一个内置的(功能)是有点可疑的,但它让人读起来很愉快,而且没有人愿意这样做。
|
![]() |
4
1
我在研究这个问题时发现的最常见的模式是 Mozilla Developer Network . 我更新了他们的示例,以包含对超类方法的调用,并在警报消息中显示日志:
|
![]() |
5
0
你可以使用Crockford在他的书“javascript的好部分”中提出的功能模式。其思想是使用closare创建私有字段,并使用previleged函数访问这些字段。以下是满足您6项要求的解决方案之一:
|
![]() |
6
-1
克罗克福德也启发了我,但我对他使用“构造函数函数”所说的“功能继承”有很好的经验。YMMV。
更新
:对不起,我忘了:您仍然需要用
|
![]() |
Softly · 单选按钮未按预期取值 1 年前 |
|
SlickRed · 我无法使用JS关注HTML元素 1 年前 |
![]() |
assembler · Nextjs没有处理发布请求 1 年前 |
|
BADRUM · 执行两个获取功能后,如何导航回页面? 1 年前 |
![]() |
Toniq · javascript为php保存多维数组 1 年前 |