ECMAScript 2015(也称为 ES6)引入了 JavaScript 类。
JavaScript 类是 JavaScript 对象的模板。
使用关键字 class
创建一个类。
始终添加名为 constructor()
的方法:
class ClassName {
constructor() { ... }
}
class Car {
constructor(name, year) {
this.name = name;
this.year = year;
}
}
上面的示例创建了一个名为“Car”的类。
该类有两个初始属性:“name”和“year”。
JavaScript 类不是对象。
它是 JavaScript 对象的模板。
当你有一个类时,你可以使用该类来创建对象:
const myCar1 = new Car("Ford", 2014);
const myCar2 = new Car("Audi", 2019);
自己尝试一下 →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Classes</h1>
<p>Creating two car objects from a car class:</p>
<p id="demo"></p>
<script>
class Car {
constructor(name, year) {
this.name = name;
this.year = year;
}
}
const myCar1 = new Car("Ford", 2014);
const myCar2 = new Car("Audi", 2019);
document.getElementById("demo").innerHTML =
myCar1.name + " " + myCar2.name;
</script>
</body>
</html>
上面的示例使用 Car 类 创建两个 Car 对象。
创建新对象时会自动调用构造函数方法。
构造方法是一个特殊的方法:
它必须有确切的名称“构造函数”
创建新对象时自动执行
它用于初始化对象属性
如果没有定义构造函数方法,JavaScript 将添加一个空的构造函数方法。
类方法是使用与对象方法相同的语法创建的。
使用关键字 class
创建一个类。
始终添加 constructor()
方法。
然后添加任意数量的方法。
class ClassName {
constructor() { ... }
method_1() { ... }
method_2() { ... }
method_3() { ... }
}
创建一个名为“age”的类方法,返回汽车年龄:
class Car {
constructor(name, year) {
this.name = name;
this.year = year;
}
age() {
const date = new Date();
return date.getFullYear() - this.year;
}
}
const myCar = new Car("Ford", 2014);
document.getElementById("demo").innerHTML =
"My car is " + myCar.age() + " years old.";
自己尝试一下 →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Class Methods</h1>
<p>How to define and use a Class method.</p>
<p id="demo"></p>
<script>
class Car {
constructor(name, year) {
this.name = name;
this.year = year;
}
age() {
const date = new Date();
return date.getFullYear() - this.year;
}
}
const myCar = new Car("Ford", 2014);
document.getElementById("demo").innerHTML =
"My car is " + myCar.age() + " years old.";
</script>
</body>
</html>
您可以向类方法发送参数:
class Car {
constructor(name, year) {
this.name = name;
this.year = year;
}
age(x) {
return x - this.year;
}
}
const date = new Date();
let year = date.getFullYear();
const myCar = new
Car("Ford", 2014);
document.getElementById("demo").innerHTML=
"My car is
" + myCar.age(year) + " years old.";
自己尝试一下 →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Class Method</h1>
<p>Pass a parameter into the "age()" method.</p>
<p id="demo"></p>
<script>
class Car {
constructor(name, year) {
this.name = name;
this.year = year;
}
age(x) {
return x - this.year;
}
}
const date = new Date();
let year = date.getFullYear();
const myCar = new Car("Ford", 2014);
document.getElementById("demo").innerHTML=
"My car is " + myCar.age(year) + " years old.";
</script>
</body>
</html>
下表定义了第一个完全支持的浏览器版本 JavaScript 中的类:
Chrome 49 | Edge 12 | Firefox 45 | Safari 9 | Opera 36 |
Mar, 2016 | Jul, 2015 | Mar, 2016 | Oct, 2015 | Mar, 2016 |
您将在本教程的后面部分了解有关 JavaScript 类的更多信息。