class 类名{
属性;
方法;
// 构造方法,实例化类的时候,自动调用
constructor(){
}
}
1.类要实例化,才能调用普通方法
class A { name = 'zs'; age = 18; say() { console.log('一和你聊天,我就成了别人眼中的傻子!'); } } // 类要实例化,才能调用普通方法 let a = new A; // console.log(a); a.say(); // 一和你聊天,我就成了别人眼中的傻子! console.log(a.name); //zs
2. 构造方法的使用
// 构造方法的使用 class B { name = 'ls'; // new的时候自动调用 constructor() { console.log(this.name); } } new B;
3. 给对象中属性赋值,类中的this指向实例化之后的对象
// 给对象中属性赋值 // 类中的this指向实例化之后的对象 class C { constructor(name, age) { this.name = name; this.age = age; // 在构造方法中,直接调用其他方法 this.say(); } say() { console.log(this); console.log(this.name); } } let c = new C('zs', 18); c.say();
4. class的继承
class A { name = '他爸'; say() { console.log(this.name + '说:我给你换个妈!'); } } // B类继承了A类 class B extends A { age = 18; } var b = new B; console.log(b.name); b.say() class C { name = 'zs'; age = 18; constructor(age) { this.age = age console.log(age); } } class D extends C { constructor(info, age) { // 当子类,父类都有构造方法,需要使用super,调用父类的构造方法 super(age); this.info = info; console.log(this.info); } } new D('嘿嘿', 22);
5.静态属性和方法
/* 静态关键字 static 被static修饰的方法和属性,只属于类本身 只能使用类名进行调用 */ class Goods { static name = '小姐姐'; age = 18; constructor() { // 静态属性和方法的调用,只能用类名,不能使用this // console.log(Goods.name); //Goods.info(); // 静态方法 // Goods.demo.bind(this)(); // call() 改变this指向,直接调用 Goods.demo.call(this) } say() { console.log('小姐姐,你知道我为什么单身吗?'); } // 静态方法中,this指向当前的类 static info() { console.log('因为还没有向你告白!'); console.log(this); } static demo() { console.log(this.age); } } let g = new Goods; // g.say(); // g.info(); // Goods.info();