JavaScript 类
JavaScript 类
ECMAScript 2015,也称为 ES6,引入了 JavaScript 类。
JavaScript 类是 JavaScript 对象的模板。
JavaScript 类的语法
请使用关键字 class
创建一个类。
请始终添加一个名为 constructor()
的方法:
语法
class ClassName {
constructor() { ... }
}
示例代码:
class Car {
constructor(name, year) {
this.name = name;
this.year = year;
}
}
上面的例子创建了一个名为 "Car" 的类。
该类有两个初始属性:"name" 和 "year"。
JavaScript 类不是对象。
它是 JavaScript 对象的模板。
使用类
当您有了一个类时,可以使用该类来创建对象:
示例代码:
let myCar1 = new Car("Ford", 2014);
let myCar2 = new Car("Audi", 2019);
完整实例:
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 类</h1>
<p>如何使用 JavaScript 类。</p>
<p id="demo"></p>
<script>
class Car {
constructor(name, year) {
this.name = name;
this.year = year;
}
}
const myCar = new Car("Ford", 2014);
document.getElementById("demo").innerHTML =
myCar.name + " " + myCar.year;
</script>
</body>
</html>
运行结果:
Javascript 类 如何使用 Javascript 类。 Ford 2014
可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html
上面的例子使用 Car 类来创建两个 Car 对象。
在创建新对象时会自动调用构造方法(constructor method)。
构造方法
构造方法是一种特殊的方法:
- 它必须有确切的名称的 “constructor”
- 创建新对象时自动执行
- 用于初始化对象属性
- 如果您没有定义构造方法,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() {
let date = new Date();
return date.getFullYear() - this.year;
}
}
let myCar = new Car("Ford", 2014);
document.getElementById("demo").innerHTML =
"My car is " + myCar.age() + " years old.";
完整实例:
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 类方法</h1>
<p>如何定义和使用类方法。</p>
<p id="demo"></p>
<script>
class Car {
constructor(name, year) {
this.name = name;
this.year = year;
}
age() {
let date = new Date();
return date.getFullYear() - this.year;
}
}
let myCar = new Car("Ford", 2014);
document.getElementById("demo").innerHTML =
"My car is " + myCar.age() + " years old.";
</script>
</body>
</html>
运行结果:
Javascript 类方法 如何定义和使用类方法。 My car is 8 years old.
可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html
您可以向类方法发送参数:
示例代码:
class Car {
constructor(name, year) {
this.name = name;
this.year = year;
}
age(x) {
return x - this.year;
}
}
let date = new Date();
let year = date.getFullYear();
let myCar = new Car("Ford", 2014);
document.getElementById("demo").innerHTML=
"My car is " + myCar.age(year) + " years old.";
完整实例:
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 类方法</h1>
<p>将参数传递给 "age()" 方法。</p>
<p id="demo"></p>
<script>
class Car {
constructor(name, year) {
this.name = name;
this.year = year;
}
age(x) {
return x - this.year;
}
}
let date = new Date();
let year = date.getFullYear();
let myCar = new Car("Ford", 2014);
document.getElementById("demo").innerHTML=
"My car is " + myCar.age(year) + " years old.";
</script>
</body>
</html>
运行结果:
Javascript 类方法 将参数传递给 "age()" 方法。 My car is 8 years old.
可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html
浏览器支持
下表注明首个完全支持 JavaScript 类的浏览器版本:
Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 49 | Edge 12 | Firefox 45 | Safari 9 | Opera 36 |
2016 年 3 月 | 2015 年 7 月 | 2016 年 3 月 | 2015 年 10 月 | 2016 年 3 月 |
"use strict"
类中的语法必须以“严格模式”编写。
如果您不遵循“严格模式”规则,将收到错误消息。
示例代码:
在“严格模式”下,如果您使用变量而不声明它,会得到错误:
class Car {
constructor(name, year) {
this.name = name;
this.year = year;
}
age() {
// date = new Date(); // This will not work
let date = new Date(); // This will work
return date.getFullYear() - this.year;
}
}
完整实例:
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript 类是以“严格模式”编写的</h1>
<p>在 JavaScript 类中,您不能在未声明的情况下使用变量。</p>
<p id="demo"></p>
<script>
class Car {
constructor(name, year) {
this.name = name;
this.year = year;
}
age() {
// date = new Date(); // This will not work
let date = new Date(); // This will work
return date.getFullYear() - this.year;
}
}
myCar = new Car("Ford", 2014);
document.getElementById("demo").innerHTML =
"My car is " + myCar.age() + " years old.";
</script>
</body>
</html>
运行结果:
Javascript 类是以“严格模式”编写的 在 Javascript 类中,您不能在未声明的情况下使用变量。 My car is 8 years old.
可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html
在 JS 严格模式 中学习更多关于“严格模式”的内容。