本文概要
- 类声明
- 类表达式
该JavaScript类包含包括方法或构造函数体内各类成员。类在严格模式下执行。因此,含有沉默误差或错误的代码抛出一个错误。
类的语法包含两个组件:
- 类声明
- 类表达式
类声明例
让我们来看看声明类的简单例子。
<
script>
//Declaring class
class Employee
{
//Initializing an object
constructor(id,name)
{
this.id=id;
this.name=name;
}
//Declaring method
detail()
{
document.writeln(this.id+" "+this.name+"<
br>")
}
}
//passing object to a variable
var e1=new Employee(101,"Martin Roy");
var e2=new Employee(102,"Duke William");
e1.detail();
//calling method
e2.detail();
<
/script>
输出:
101 Martin Roy
102 Duke William
类声明例:提升
与函数声明,类声明JavaScript不提升的一部分。因此,就需要调用它之前声明的类。
让我们来看一个例子。
<
script>
//Here,we are invoking the class before declaring it.
var e1=new Employee(101,"Martin Roy");
var e2=new Employee(102,"Duke William");
e1.detail();
//calling method
e2.detail();
//Declaring class
class Employee
{
//Initializing an object
constructor(id,name)
{
this.id=id;
this.name=name;
}
detail()
{
document.writeln(this.id+" "+this.name+"<
br>")
}
}
<
/script>
输出:
类声明实施例:重新声明类
一个类可以一次只标示。如果我们尝试声明类不止一个时,它抛出一个错误。
让我们来看一个例子。
<
script>
//Declaring class
class Employee
{
//Initializing an object
constructor(id,name)
{
this.id=id;
this.name=name;
}
detail()
{
document.writeln(this.id+" "+this.name+"<
br>")
}
}
//passing object to a variable
var e1=new Employee(101,"Martin Roy");
var e2=new Employee(102,"Duke William");
e1.detail();
//calling method
e2.detail();
//Re-declaring class
class Employee
{
}
<
/script>
输出:
类表达式定义一个类的另一种方法是通过使用一个类的表达。在这里,它不是强制性的分配类的名称。所以,该类表达式可以有名或无名的。该类表达使我们能够获取的类名。然而,这不会是可能的类声明。
无名类表达式
这个类可以不给它分配任何名称来表示。
让我们来看一个例子。
<
script>
var emp = class {
constructor(id,name) {
this.id = id;
this.name = name;
}
};
document.writeln(emp.name);
<
/script>
输出:
emp
类表达实施例:重新声明类
不同类的声明,类表情让我们重新申报同一类。所以,如果我们试图将类声明超过一次,它抛出一个错误。
<
script>
//Declaring class
var emp=class
{
//Initializing an object
constructor(id,name)
{
this.id=id;
this.name=name;
}
//Declaring method
detail()
{
document.writeln(this.id+" "+this.name+"<
br>")
}
}
//passing object to a variable
var e1=new emp(101,"Martin Roy");
var e2=new emp(102,"Duke William");
e1.detail();
//calling method
e2.detail();
//Re-declaring class
var emp=class
{
//Initializing an object
constructor(id,name)
{
this.id=id;
this.name=name;
}
detail()
{
document.writeln(this.id+" "+this.name+"<
br>")
}
}
//passing object to a variable
var e1=new emp(103,"James Bella");
var e2=new emp(104,"Nick Johnson");
e1.detail();
//calling method
e2.detail();
<
/script>
输出:
101 Martin Roy
102 Duke William
103 James Bella
104 Nick Johnson
命名的类的表达实施例
我们可以表达对特定名称的类。在这里,类名的范围是到类主体。该类使用class.name属性检索。
<
script>
var emp = class Employee {
constructor(id,name) {
this.id = id;
this.name = name;
}
};
document.writeln(emp.name);
/*document.writeln(Employee.name);
Error occurs on console:
"ReferenceError: Employee is not defined
*/
<
/script>
输出:
Employee
推荐阅读
- JavaScript表单验证
- javascript日期
- JavaScript的导航对象
- JavaScript的数学对象
- JavaScript的innerText属性
- JavaScript的document.getElementsByTagName()方法
- JavaScript的document.getElementsByName()方法
- JavaScript的document.getElementById()方法
- JavaScript的文档对象(文档对象模型)