JS中class和构造函数的区别(js class和构造函数的区别)

在JavaScript中,class和构造函数是两种常见的创建对象的方式。虽然class在ES6中被引入,但它背后仍然基于构造函数的原理。然而,class和构造函数在语法和行为上存在一些重要的区别。

一、回顾class的写法

ES6引入了class语法,使得创建类更加直观和简洁。以下是一个简单的class示例:

在上面的代码中,我们定义了一个名为Computer的类,该类包含实例属性name和price,一个原型方法showSth以及一个静态方法comStruct。

二、回顾构造函数的写法

在ES6出现之前,我们通常使用构造函数来模拟类。以下是一个等效的ES5写法:

在上面的代码中,我们通过构造函数Computer来创建对象,并将方法挂在原型上。

三、class和构造函数的区别

(一)调用方式

构造函数可以通过普通函数调用,而class必须通过new关键字调用。

(二)枚举性

ES6中的class方法默认是不可枚举的,而ES5中的原型方法是可枚举的。

(三)严格模式

ES6的class内部默认是严格模式,而ES5的构造函数不是。

(四)原型方法的调用

ES6的class原型方法不能通过new调用,而ES5的原型方法可以。