为了账号安全,请及时绑定邮箱和手机立即绑定

在JavaScript中可以使用什么技术来定义类,它们的权衡是什么?

在JavaScript中可以使用什么技术来定义类,它们的权衡是什么?

郎朗坤 2019-07-02 14:43:41
在JavaScript中可以使用什么技术来定义类,它们的权衡是什么?我更喜欢在大型项目中使用OOP,就像我现在正在做的那样。我需要用JavaScript创建几个类,但是,如果我没有弄错的话,至少有几种方法可以做到这一点。语法是什么?为什么要这样做?我想避免使用第三方库-至少一开始是这样的。为了寻找其他答案,我找到了这篇文章用JavaScript进行面向对象的编程,第一部分:继承-DocJavaScript讨论JavaScript中的面向对象编程。有没有更好的继承方法?
查看完整描述

3 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

在JavaScript中定义类的最佳方法是不定义类。

我是认真的。

面向对象有几种不同的风格,其中一些是:

  • 基于类的OO(第一次由Smalltalk引入)
  • 基于原型的OO(首先由Self引入)
  • 基于多方法的OO(我认为首次由CommonLoops引入)
  • 基于谓词的OO(不知道)

也许还有一些我不知道的人。

JavaScript实现了基于原型的OO。在基于原型的OO中,新对象是通过复制其他对象(而不是从类模板中实例化)创建的,方法直接存在于对象中而不是类中。继承是通过委托完成的:如果对象没有方法或属性,则会在其原型(即从其克隆的对象)上查找该对象,然后再查找原型的原型,以此类推。

换句话说:没有课。

JavaScript实际上对该模型进行了很好的调整:构造函数。也就是说,你不仅可以通过复制现有的物体来创建对象,还可以通过“稀薄的空气”来构造它们。如果使用new关键字,则该函数将成为构造函数,而this关键字不会指向当前对象,而是指向新创建的“空”对象。因此,您可以任意配置对象。这样,JavaScript构造函数就可以在传统的基于类的OO中扮演类的角色:充当新对象的模板或蓝图。

现在,JavaScript是一种非常强大的语言,因此实现一个基于类的面向对象系统非常容易。在JavaScript中如果你想的话。但是,只有当您确实需要它时才应该这样做,而不仅仅是因为Java就是这样做的。


查看完整回答
反对 回复 2019-07-02
  • 3 回答
  • 0 关注
  • 348 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号