首先复习一下js是什么语言:js是一个基于面向对象设计的单线程的静态脚本语言
基于面向对象:本质没有面向对象的方法和一些特点,但是按照自己的语法特征进行了相识的设计
单线程:只能同时执行一个js代码
静态:有错误不会立即返回 只有执行遇到才会报错
脚本语言:具有嵌套特征 直接在代码中嵌套新代码
类的语法 类名最好大写 好做区分
1.声明类
class Person {}
let p1 = new Person();
console.log(p1); //Person {}
2.匿名类
var fn = class {};
let p2 = new fn();
console.log(p2); //fn {}
需要注意的是:
1.js没有类 以原型思想设计的类 但是要以类的思想进行学习
2.类虽然是一个函数 但本质是类 不能用函数的方法去写类 类有自己的语法
Person类的内部可以写一个constructor方法 用这个类创建对象时 就会运行这个构造函数 不写的话 系统会默认有一个空的构造运行
class Person1 {
constructor(a) {
//这内部可以用函数的方法写 里面写的方法函数会直接添加到原型上
console.log(a);
}
//对象的属性
life = 50;
//原型对象的方法
say() {
console.log(2111);
}
//类的静态属性
static life;
//类的静态方法
static say2() {}
}
let p3 = new Person1(10);
console.log(p3); //10 Person1 {}
p3.say(); //2111
继承
class Person2 {
life = 1;
constructor(name) {
this.name = name;
this.make = function () {
console.log(this.name + "赚钱");
};
}
run() {
console.log(this.name + "跑步");
}
}
var n1 = new Person2("jack");
var n2 = new Person2("Karen");
console.log(p1, p2);
将Person2继承给新的class类
class Student extends Person2 {
constructor() {
super(name); //必须写 让Person类的构造函数的逻辑去帮我们构建对象空间
this.age = 20;
this.book = "书名";
}
}
var s1 = new Student("marry");
console.log(s1);