JavaScript类(class)
class ClassName {
constructor() { ... }//类的狗在函数,用于初始化一个由class创建的对象
}
class Runoob {
constructor(name, url) {
this.name = name;
this.url = url;
}
}
使用类
new关键字来创建对象
class Runoob {
constructor(name, url) {
this.name = name;
this.url = url;
}
}
let site = new Runoob("阿娆要努力呀", "https://www.cnblogs.com/ar000517/");
类表达式
// 未命名/匿名类
let Runoob = class {
constructor(name, url) {
this.name = name;
this.url = url;
}
};
console.log(Runoob.name);
// output: "Runoob"
// 命名类
let Runoob = class Runoob2 {
constructor(name, url) {
this.name = name;
this.url = url;
}
};
console.log(Runoob.name);
// 输出: "Runoob2"
构造方法是一种特殊的方法:
- 构造方法名为 constructor()。
- 构造方法在创建新对象时会自动执行。
- 构造方法用于初始化对象属性。
- 如果不定义构造方法,JavaScript 会自动添加一个空的构造方法。
类的方法
我们使用关键字 class 创建一个类,可以添加一个 constructor() 方法,然后添加任意数量的方法。
class Ar {
constructor(name, year) {
this.name = name;
this.year = year;
}
age() {
let date = new Date();
return date.getFullYear() - this.year;
}
}
let ar = new Ar("阿娆", 2000);
document.getElementById("demo").innerHTML =
"阿娆" + ar.age() + " 岁了。";
类继承
关键字extends
// 基类
class Animal {
// eat() 函数
// sleep() 函数
};
//派生类
class Dog extends Animal {
// bark() 函数
};
getter setter
类中我们可以使用 getter 和 setter 来获取和设置值,getter 和 setter 都需要在严格模式下执行。
getter 和 setter 可以使得我们对属性的操作变的很灵活。
类中添加 getter 和 setter 使用的是 get 和 set 关键字。
class Ar {
constructor(name) {
this.sitename = name;
}
get s_name() {
return this.sitename;
}
set s_name(x) {
this.sitename = x;
}
}
let ar = new Ar("菜鸟教程");
document.getElementById("demo").innerHTML = ar.s_name;
**注意:**即使 getter 是一个方法,当你想获取属性值时也不要使用括号。
getter/setter 方法的名称不能与属性的名称相同,
静态方法
static 类方法,属于类但属不属于对象 类名.方法名
静态方法不能再对象上调用,只能在类中调用