由于一些对象的方法都是不变的,那么可以通过prototype去定义方法
function User(name, email){
this.name = name;
this.email = email;
}
User.prototype.info = function(){
console.log(`${this.name} - ${this.email]`);
}
const tom = new User('tom', '12@qq.com');
tom.info()
类的定义
class User {
constructor(name, email) {
this.name = name;
this.email = email;
}
info() {
return `${this.name} - ${this.email}`;
}
// 静态方法,通过类名调用
static description(){
return 'this is a user class';
}
set github(value){
this.githubName = value;
}
get github(){
return `${this.githubName} - 'jiayou'`
}
}
const tom = new User('tom', '12@qq.com');
const jack = new User('jack', '456@qq.com');
类的继承
class Animal {
constructor(name) {
this.name = name;
this.foods = [];
}
eat(food) {
this.foods.push(food);
}
}
class Dog extends Animal {
constructor(name, age) {
super(name); // 调用父类的构造函数
this.age = age;
}
bark() {
console.log('bark!');
}
}
const dog = new Dog('dog1', 12);
继承Array的例子
class movieCollection extends Array {
constructor(name, ...items) {
super(...items); // 调用父类的构造函数
this.name = name
}
add(movie) {
this.push(movie);
}
}
const movies = new movieCollection('favorite movies',
{ name: 'movie-1', score: 9.9 },
{ name: 'movie-2', score: 3.4 },
{ name: 'movie-3', score: 8.7 },
{ name: 'movie-4', score: 7.1 },
)