JavaScript中的类与函数构造函数
背景:C#开发人员最近潜入javascript 下面是在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
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