JS类的定义与使用方法深入探索
什么是类
在Javascript中,类(class)是一种常见的面向对象编程(OOP)范式。它允许开发者根据构造函数,定义出对象的共通特性和方法。
类的定义基于ES6中的类声明语法,ES6中引入了类和创建类的方法。
类的定义
ES6中的类声明语法是这样的:
class ClassName{
constructor(options) {
this.name = options.name;
this.age = options.age;
}
sayHello(){
console.log("Hello, " + this.name);
}
}
这里我们定义了一个名为ClassName
的类,包含一个构造函数和一个sayHello()
方法。在构造函数中,我们使用传入的options对象为类的实例设置了属性name
和age
。在sayHello()
方法中,我们输出字符串'Hello, '和类实例的name
属性。
类的实例化
在定义好一个类之后,我们可以通过new
关键字创建一个类实例:
let myInstance = new ClassName({name:"Tom", age:18});
这里,我们创建了一个名为myInstance
的实例化对象,传递了一个options对象作为参数,该对象具有name
和age
属性。在类的构造函数中,我们使用这些值对类实例化对象的name
和age
属性进行赋值。
类的继承
如果我们需要创建一个类,这个类需要继承父类某些属性和方法,我们可以利用ES6的类继承语法来定义这个类。
类继承使用extends
关键字,它允许我们在一个类中引用其他类的属性和方法。例如:
class SubClassName extends ClassName{
constructor(options) {
super(options);
this.job = options.job;
}
sayJob() {
console.log("I am a " + this.job);
}
}
这里,我们定义了一个名为SubClassName
的子类。它继承自ClassName
类。在构造函数中,我们首先通过调用super()
方法来调用父类的构造函数,从而可以继承父类中的属性和方法。然后,我们给子类添加了job
属性。同时,我们定义了sayJob()
方法,在该方法中,我们输出了字符串'I am a '和类实例的job
属性。
示例一
class Animal {
constructor(name, age) {
this.name = name;
this.age = age;
}
sayHello() {
console.log(`Hello, I'm ${this.name}, ${this.age} years old!`);
}
}
class Dog extends Animal {
constructor(name, age, type) {
super(name, age);
this.type = type;
}
bark() {
console.log(`Hello, I'm a ${this.type} dog and I can bark!`);
}
}
const myDog = new Dog('Tom', 5, 'Beagle');
myDog.sayHello();
myDog.bark();
这里我们定义了一个Animal
基类和一个Dog
的子类。Dog
类继承于Animal
类,并添加了type
和bark()
方法。在实例化myDog之后,我们调用了基类的方法sayHello()
和子类的方法bark()
。
示例二
class Shape {
constructor(color) {
this.color = color;
}
getArea() {}
}
class Circle extends Shape {
constructor(color, radius) {
super(color);
this.radius = radius;
}
getArea() {
return Math.PI * this.radius ** 2;
}
}
let myCircle = new Circle("red", 5);
console.log(`The area of my ${myCircle.color} circle is ${myCircle.getArea()}`);
这里我们定义了一个Shape
基类和一个Circle
子类。Circle
类继承于Shape
类,并添加了radius
和getArea()
方法。在实例化myCircle
之后,我们调用了getArea()
方法,计算出了一个圆形的面积。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS类的定义与使用方法深入探索 - Python技术站