1
730
以下是不使用任何外部库的方法:
现在真正的答案要比这复杂得多。例如,JavaScript中没有类。javascript使用
此外,还有许多流行的JavaScript库,它们都有自己的风格来近似JavaScript中类功能。你至少要退房 Prototype 和 jQuery . 决定哪一个是“最好的”,是一个伟大的方式开始一场圣战堆叠溢出。如果你正在着手一个更大的JavaScript重的项目,那绝对值得学习一个流行的库并按他们的方式来做。我是一个原型,但Stack Overflow似乎倾向于jQuery。 因为只有“一种方法”,不依赖于外部库,所以我写的方法差不多就是它。 |
2
211
在JavaScript中定义类的最佳方法是不定义类。 说真的。 对象方向有几种不同的风格,其中一些是:
可能还有其他我不认识的人。 JavaScript实现了基于原型的OO。在基于原型的OO中,通过复制其他对象(而不是从类模板实例化)来创建新对象,方法直接存在于对象中而不是类中。继承是通过委托完成的:如果一个对象没有方法或属性,它将在其原型(即从中克隆的对象)上进行查找,然后在原型的原型上进行查找,依此类推。 换句话说:没有课程。
实际上,javascript对该模型有一个很好的调整:构造器。可以说,您不仅可以通过复制现有对象来创建对象,还可以“凭空”构建它们。如果使用
现在,javascript是一种非常强大的语言,因此很容易实现基于类的OO系统。 在javascript中 如果你想的话。但是,如果你真的需要它,而不仅仅是因为Java是这样做的,你就应该这样做。 |
3
78
ES2015课程在ES2015规范中,您可以使用类语法,它只是原型系统的一部分。
效益主要的好处是静态分析工具发现更容易针对这种语法。对于来自基于类的语言的其他人来说,将该语言用作多语种语言也更容易。 告诫小心它目前的局限性。要想获得私有财产,必须求助于 using Symbols or WeakMaps . 在未来的版本中,类很可能会扩展到包含这些缺失的特性。 支持Browser support 目前不是很好(除了IE,几乎所有人都支持),但是现在您可以使用类似蒸腾器的这些功能 Babel . 资源 |
4
56
我喜欢用丹尼尔X摩尔的
哇,这本身并不是很有用,但是看看添加子类:
另一个优势是拥有模块和基于特征的继承的能力。
包含Person类的示例包括可绑定模块。
披露:我是丹尼尔·X·摩尔,这是我的
|
5
41
|
6
29
下面是在javascript中创建对象的方法,到目前为止我已经使用了这些方法 例1:
例2:
例3:
例4: Actual benefits of Object.create(). please refer [this link]
示例5(自定义crockford的object.create):
用ES6/ES2015更新答案 类的定义如下:
|
7
24
我想你应该读道格拉斯·克罗克福德的 Prototypal Inheritance in JavaScript 和 Classical Inheritance in JavaScript . 本页示例:
效果?它将允许您以更优雅的方式添加方法:
我还推荐他的视频: Advanced JavaScript . 您可以在他的页面上找到更多视频: http://javascript.crockford.com/ 在JohnReisig的书中,你可以从道格拉斯·克罗克福的网站上找到很多例子。 |
8
16
因为我不接受Yui/Crockford工厂计划,而且因为我喜欢保持事物的独立性和可扩展性,这是我的变体:
在理想的情况下,测试类型是基于类似于第一个原型方法的 |
9
15
如果你想简单点,你可以完全避免“new”关键字,只使用工厂方法。有时我更喜欢这样,因为我喜欢使用JSON创建对象。
不过,我不确定大型对象的性能影响是什么。 |
10
12
这就是typescript用构造函数将类编译为javascript的方式。 |
11
10
简单的方法是:
原因
编辑:这绝对不是最好的方法,只是一个简单的方法。我也在等待好的答案! |
12
9
您可能希望使用折叠模式创建类型:
该代码将为您提供一个名为 MyType . 它将有内部私有字段调用 切换 和 文本 . 它还将具有这些公开的成员:字段 计数 和 数字 ;属性 切换 , 文本 和 数字长度 方法 递增数字ByCount 和 扭 . 折叠图案在这里详细说明: Javascript Folding Pattern |
13
3
@liammclennan's的代码高尔夫 answer .
|
14
2
|
15
2
具有继承性的基于对象的类
简单,甜蜜,完成任务。 |
16
1
底座
一个班
行动
|
17
1
基于Triptych的例子,这可能更简单:
这只创建一个对象实例,但是如果您想在一个类中封装变量和方法的一组名称,它仍然有用。通常,构造函数不会有“bob,m”参数,例如,如果方法将被调用到具有自己数据的系统,例如数据库或网络。
我对JS还太陌生,不明白为什么它不使用
|
18
0
JavaScript是 object-oriented 但是它和其他的完全不同 OOP 像Java、C语言或C++这样的语言。不要那样理解它。抛开旧知识,重新开始。JavaScript需要不同的思考。
我建议你找一本好的手册或是有关这个问题的东西。
|
19
0
|
Softly · 单选按钮未按预期取值 1 年前 |
SlickRed · 我无法使用JS关注HTML元素 1 年前 |
assembler · Nextjs没有处理发布请求 1 年前 |
BADRUM · 执行两个获取功能后,如何导航回页面? 1 年前 |
Toniq · javascript为php保存多维数组 1 年前 |