ES5传统写法
{
function Point(x, y) {
this.x = x;
this.y = y;
}
}
ES6写法——class写法
class写法更加清晰,可以将它看做语法糖。能够让对象原型的写法更像‘面向对象’的语法。
{
class Parent {
constructor(name = 'zhangwen') {
this.name = name;
}
}
let z_Parent = new Parent('zhang');
console.log(z_Parent);
}
Class的继承
Class之间可以通过extends关键字实现继承
疑问:子类如何覆盖父类的值呢?‘继承’时如何修改父类的参数?
回答:用super关键字。注意:在继承关系中,子类的构造函数如果用到super,必须将它放在第一行!!
class Parent {
constructor(name = 'zhangwen') {
this.name = name;
}
}
class Child extends Parent {
constructor(name = 'child') {
super(name);
this.type = 'child';
}
console.log('继承', new Child);
Class的取值函数和存值函数
· getter
· setter
class Parent {
constructor(name = 'zhang') {
this.name = name;
}
get longName() {
return this.name;
}
set longName(value) {
this.name = value;
}
}
let z = new Parent();
console.log('getter', z.longName);
z.longName = 'Greta';
console.log('setter', z.longName)
Class的静态方法和静态属性
如果在一个方法前加上static关键字,就表示该方法不会被实例继承,而是直接通过类调用,称为“静态方法”。
注意:static只能用来定义静态方法!不涉及静态属性!
{
class Parent {
constructor(name = 'getter-test') {
this.name = name;
}
static tell() {
console.log('tell');
}
}
Parent.tell();
let z = new Parent();
z.tell();
Parent.type='test';
console.log('静态属性',Parent.type);
}