javascript - JavaScript 中的类与函数构造函数

标签 javascript

背景:C# 开发人员最近深入研究 JavaScript

下面是在 JavaScript 中创建对象的两种方法。它们之间有什么区别,创建对象时我应该使用/优先考虑哪种方法,为什么?

class John {
    constructor(name, birth, height) {
        this.name = name;
        this.birth = birth;
        this.height = height;} }

var Person = function(name, birth, height) {
    this.name = name;
    this.birth = birth;
    this.height = height;}

最佳答案

他们做的事情基本相同。 class语法是在 ES2015 中引入的,它可以为您做一些事情:

  • 它构建了一个检查,确保该函数在创建新对象时被调用,从而消除了在没有 new 的情况下调用构造函数的一整类错误。允许。

  • 它允许使用 super在构造函数和方法中。

  • 它更简单,特别是如果您创建子类。

  • 如果您使用 Error 等内置函数的子类,就会简单得多。或Array (您可以在没有 class 的情况下完成此操作)。

但是您可以在没有 class 的情况下完成所有这些操作如果您更喜欢使用旧语法。

当然,如果不通过 Babel 等工具转换为旧语法,您就无法在 IE 等过时的浏览器上使用新语法。 .

(必须注意:在 JavaScript 的原型(prototype)继承上使用类似类的陷阱是一种风格选择,而不是必需的。如果您愿意,可以直接使用原型(prototype)继承。)

您还可以找到this answer有用,比较class语法与 function 做同样的事情语法。

关于javascript - JavaScript 中的类与函数构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52666266/

相关文章:

javascript - Highcharts - 多个 Y 轴

javascript - 如何获取 JSON 数组中的 JSON 对象名称

javascript - 错误! 404 未找到 : @babel/preset-vue@^7. 1.0

javascript - TS2307 : Cannot find module '~express/lib/express'

javascript - 将默认值设置为 Node js中的mongoose数组

javascript - 如何在 Typescript 中实现 JS 函数指针

javascript - 更改背景图片网址

javascript - 加载页面时,我可以在 HTML、javascript 或 CSS 中将缩放初始化为 100%

javascript - 如何垂直制作angular2中ngx图表中的 "advanced pie chart"?

javascript - 使用 dojo 显示 Json 数据