JavaScript中的类与函数构造函数

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

背景: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;}

他们做的事情大体相同<代码>类语法是在ES2015中引入的,它为您做了一些事情:

  • 它建立在一个检查中,检查函数是否作为创建新对象的一部分被调用,从而消除了在没有
    new
    的情况下调用构造函数所允许的一整类错误

  • 它支持在构造函数和方法中使用
    super

  • 它更简单,特别是如果您使用子类

  • 如果您使用内置的子类,如
    Error
    Array
    (您可以在不使用
    class
    的情况下使用),则要简单得多

但是,如果您喜欢使用较旧的语法,那么您可以在不使用
类的情况下完成所有这些操作

当然,在IE等过时浏览器上使用新语法时,必须通过IE等工具转换为旧语法

(并且必须注意:在JavaScript的原型继承上使用类一样的标记是一种风格选择,而不是一种要求。如果您愿意,您可以直接使用原型继承。)


语法与使用
函数
语法做相同的事情进行比较,您可能会发现这很有用。

它们做的事情基本相同<代码>类
语法是在ES2015中引入的,它为您做了一些事情:

  • 它建立在一个检查中,检查函数是否作为创建新对象的一部分被调用,从而消除了在没有
    new
    的情况下调用构造函数所允许的一整类错误

  • 它支持在构造函数和方法中使用
    super

  • 它更简单,特别是如果您使用子类

  • 如果您使用内置的子类,如
    Error
    Array
    (您可以在不使用
    class
    的情况下使用),则要简单得多

但是,如果您喜欢使用较旧的语法,那么您可以在不使用
类的情况下完成所有这些操作

当然,在IE等过时浏览器上使用新语法时,必须通过IE等工具转换为旧语法

(并且必须注意:在JavaScript的原型继承上使用类一样的标记是一种风格选择,而不是一种要求。如果您愿意,您可以直接使用原型继承。)


您可能会发现,将
语法与
函数
语法进行比较也很有用。

在es6之前,构造函数是我们实现类结构和oop的方式。您仍然可以,但作为一名c#开发人员,您将更习惯于类表示法。只要浏览器支持es6。它们都是函数

在es6之前,构造函数是我们实现类结构和oop的方式。您仍然可以,但作为一名c#开发人员,您将更习惯于类表示法。只要浏览器支持es6。它们都是函数

语法是引用为ES6的较新JavaScript“版本”的代码

函数
声明以前使用过,被称为“原型”

因此,要回答您的问题,确定优先顺序,实际上取决于您希望支持的浏览器。您可以使用以下工具检查浏览器支持:

来自C#我认为对你来说最大的不同是浏览器支持。由于您不知道代码将在何处运行,因此应该经常检查Canuse

正如其他人所提到的,有一些编译器可以消除您的痛苦,例如或。但是,请注意,它们有自己的优点/缺点。以下是我在该主题上找到的第一个教程:


话虽如此,欢迎来到JavaScript社区。

类语法是来自引用为ES6的较新JavaScript“版本”的代码

函数
声明以前使用过,被称为“原型”

因此,要回答您的问题,确定优先顺序,实际上取决于您希望支持的浏览器。您可以使用以下工具检查浏览器支持:

来自C#我认为对你来说最大的不同是浏览器支持。由于您不知道代码将在何处运行,因此应该经常检查Canuse

正如其他人所提到的,有一些编译器可以消除您的痛苦,例如或。但是,请注意,它们有自己的优点/缺点。以下是我在该主题上找到的第一个教程:


话虽如此,欢迎来到JavaScript社区。

1。您是否希望支持Internet Explorer并害怕Transpiler?那就别无选择了。您是否希望支持Internet Explorer并害怕Transpiler?然后别无选择。计划是使用webpack和babelplan,使用webpack和babel