理解原型链与类有利于我们对代码的封装与简化
prototype
,是每个函数function独有的属性。__proto__
,是每个对象都具有的属性。// 未命名/匿名类
let test = class {
constructor(name, url) {
this.name = name;
this.url = url;
}
};
console.log(test.name);
// output: "test"
// 命名类
let test = class test2 {
constructor(name, url) {
this.name = name;
this.url = url;
}
};
console.log(test.name);
// 输出: "test2"
构造方法
类方法的使用
class ClassName {
constructor() { ... }
method_1() { ... }
method_2() { ... }
method_3() { ... }
}
class timer {
constructor(name, year) {
this.name = name;
this.year = year;
}
age(x) {
return x - this.year;
}
}
let date = new Date();
let year = date.getFullYear();
let t = new timer("张三", 2000);
console.log('张三' + t.age(year) + '岁了。')//张三22岁了。
class person{
constructor(name,age){
this.name = name
this.age = age
}
speak(){
console.log(`我叫${this.name},今年${this.age}岁`)
}
}
class son extends person{
constructor(name,age,job){
super(name,age)
this.job = job
}
speak(){
console.log(`我叫${this.name},今年${this.age}岁,工作是${this.job}`)
}
}
let p1 = new person('张三',20);
let p2 = new person('李四',30);
let s = new son('王五',33,'医生');
p1.speak()
p2.speak()
s.speak()
console.log(p1)
console.log(p2)