JavaScript 类
类是用于创建对象的模板。他们用代码封装数据以处理该数据。JS中的类建立在原型上,但也具有某些语法和语义未与ES5类相似语义共享。
在 JavaScript 中,实际上,类是“特殊的函数”,就像你能够定义的函数表达式和函数声明一样,类语法有两个组成部分:类表达式和类声明。
使用关键字class创建一个类。
始终添加名为constructor()的方法:
class ClassName {
constructor() { ... }
}
实例
class Car {
constructor(name, year) {
this.name = name;
this.year = year;
}
}
上面的例子创建了一个名为“Car”的类。
这个类有两个初始属性:“name” 和 “year”。
JavaScript类不是对象,它是JavaScript对象的 模板 。
JavaScript 使用类
当您有一个类时,可以使用该类来创建对象:
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Class</h2>
<p>如何使用 JavaScript 类</p>
<p id="demo"></p>
<script>
class Car {
constructor(name, year) {
this.name = name;
this.year = year;
}
}
myCar = new Car("福特", 2014);
document.getElementById("demo").innerHTML =
myCar.name + " " + myCar.year;
</script>
</body>
</html>
上面的示例使用Car类创建两个Car对象。
提示:构造函数方法在创建新对象时自动调用。
构造函数方法
构造函数方法是一种特殊方法:
它必须有确切的名字“constructor”
它在创建新对象时自动执行
它用于初始化对象属性
如果不定义构造函数方法,JavaScript将添加一个空的构造函数方法。
类方法
类方法是用与对象方法相同的语法创建的。
使用关键字class创建一个类。
始终添加一个构造函数 constructor() 方法。
然后可以添加多个方法。
语法
class ClassName {
constructor() { ... }
method_1() { ... }
method_2() { ... }
method_3() { ... }
}
创建一个名为“age”的类方法,该方法返回汽车年龄:
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript 类方法</h2>
<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("福特", 2014);
document.getElementById("demo").innerHTML =
"我的汽车已经 " + myCar.age() + " 岁了.";
</script>
</body>
</html>
可以向类方法发送参数:
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript 类方法</h2>
<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("福特", 2014);
document.getElementById("demo").innerHTML=
"我的汽车已经 " + myCar.age(year) + " 岁了.";
</script>
</body>
</html>
浏览器支持
下表定义了第一个完全支持 JavaScript中 类 的浏览器版本:
目标 | |||||
---|---|---|---|---|---|
类 | Chrome 49 | IE / Edge 12 | Firefox 45 | Safari 9 | Opera 36 |
2016 年 3 月 | 2015 年 6 月 | 2016 年 3 月 | 2015 年 10 月 | 2016 年 3 月 |