在ES6之前,Javascript中没有类(Class)的概念。开发者们采用了函数套函数来实现类似于面向对象的写法。ES6引入了类的概念,让Javascript更加像一个面向对象的语言。通过这篇文章,你将学到一些基本的概念和用法,让你对ES6类更为熟悉。
构造函数
在传统的Javascript中,定义类的方式是使用函数。函数名首字母通常大写,以便于区分。函数可以接受参数,包含在函数体内,并可以在其他方法中使用。在ES6中,使用class关键字来声明新类。下面是一个例子:
-- -------------------- ---- ------- ----- ------ - ----------------- ----- - --------- - ----- --------- - ----- - --------- - ----------------------- - --------- - ----------------------- - -
这是定义一个动物(Animal)类的方式。这个类有两个属性,一个name(名字),一个type(种类)。constructor
是类构造器,用来初始化实例的属性。类的方法可以放在类的内部,方法之间只需要以逗号隔开即可。上面的sayName
和sayType
就是两个方法。让我们看看如何使用这个类来创建对象。
let cat = new Animal('Lucy', 'Cat'); cat.sayName(); // Lucy cat.sayType(); // Cat
使用new
关键字来实例化一个Animlal的对象,同时传入初始化参数。我们发现,在实例化对象的时候,其构造器constructor
自动被调用了。可以通过对象的方法来访问这两个属性。这就是类构建的时候最基础的部分,已经可以用这个框架来创建对象了。
类的继承
在许多情况下,我们会想要创建一个子类,它可以继承父类的属性和方法。在ES6中,我们可以通过extends
关键字来实现继承。下面是一个例子:
-- -------------------- ---- ------- ----- --- ------- ------ - ----------------- ----- ------ - ----------- ------ ---------- - ------ - ---------- - ------------------------ - - --- --- - --- ----------- ------ --------- -------------- -- ---- -------------- -- --- --------------- -- -----
在这个例子中,我们定义了一个新类Cat
,使用extends
关键字来继承Animal
类。super
关键字用来调用父类的构造器,以便于继承类的属性。在Cat中,我们在父类的基础上添加了一个新的属性color,同时,我们也添加了一个新的方法sayColor来访问它。
静态方法
有时候,我们需要在类或子类的外部使用类的某些方法。但如果这个方法只与类本身有关,而不是实例,我们可以使用静态方法来调用。静态方法可以直接在类上调用,不需要先实例化它。下面是一个例子:
-- -------------------- ---- ------- ----- ------ - ----------------- ----- - --------- - ----- --------- - ----- - ------ ------- - ------------------- ---- -- - ---------- - --------- - ----------------------- - --------- - ----------------------- - - --------------- -- ------ ---- -- - -------
在这个例子中,我们通过static
关键字来定义了一个静态方法about()
。这个方法没有需要访问的实例,可以直接通过类名来调用。下面的代码展示了如何在类的外部直接调用这个静态方法。
总结
ES6的类轻易地给Javascript带来了面向对象编程的思想,我们可以通过类来定义许多对象。类可以被继承、实例化,同时可以有很多方法来访问类的属性。
在这篇文章中,我们学习了ES6的类的概念和基本用法,构造函数、类的继承、静态方法。希望这篇文章对初学者来说很有帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/649a91a248841e989477ab6a