constructor函数--构造一个对象的函数<br /> 特点:<br /> 1.不允许以字面量的形式去原型对象上添加属性的
class Person{constructor(name,age){this.name = name;this.age = age;}sayName(){console.log(this.name);}}/* 不允许以字面量的形式去添加属性的 */Person.prototype = {sayAge(){console.log(this.age)}}var p = new Person("cheng",20);p.sayAge()
1.Object-assign
Object.assign可以在原型上添加多个属性
class Person{constructor(name,age){this.name = name;this.age = age;}sayName(){console.log(this.name);}}Object.assign(Person.prototype,{sayAge(){console.log(this.age)},show(){console.log("show")}})var p = new Person("cheng",18);console.log(p.constructor == Person)
2.Stack
栈的数据结构
var arr = [0,1]arr.push(2);arr.pop();console.log(arr)/* peek获取处于 */function peek(){}
3.class-Stack
栈数据结构的特点:后进先出 例子水杯,谷仓,米袋就是栈的数据结构<br /> 1.push<br /> 2.pop //将栈顶的数据出栈<br /> 3.peek 获取栈顶的数据<br /> 4.isEmpty判断栈是否为空<br /> 5.size返回栈的长度<br />location路由 是以栈的数据结构去保存路由的
class Stack{constructor(){this.items = [];}push(value){this.items.push(value)}pop(){return this.items.pop();}peek(){return this.items[this.items.length-1]}isEmpty(){return this.items.length==0;}size(){return this.items.length;}}var s = new Stack();s.push(8);s.push(9);console.log(s.isEmpty())
4.class-extends
继承
super 就是指父类
class Person{constructor(name,age) {this.name = name;this.age = age;}sayName(){console.log(this.name)}}class Teacher extends Person {/* 类继承之后,构造函数第一行必须写super关键字 去继承父类的属性*/constructor(name,age,skill){super(name,age);this.skill = skill;}/* 在子类的方法中调用父类的方法 可以通过this或super去调用 */show(){this.sayName();// super.sayName();}}var t = new Teacher("zhang",18,"js");console.log(t)
5.static
静态属性,静态方法
属于类所独有的
特点:通过类名去调用
class Person{constructor(name,age){this.name = name;this.age = age;}static sayName(){console.log("name")}}var p = new Person("lisi",19);Person.sayName()
6.静态方法和普通方法
1.在普通方法中能调用静态方法
2.在静态方法中不能调用普通方法
class Person{constructor(name,age){this.name = name;this.age = age;}sayAge(){Person.sayName();console.log(this.age);}static sayName(){this.sayAge();console.log("name")}}var p = new Person("name",18)Person.sayName();
7.static-this
静态方法:
1.静态方法是属于类所独有的,类创建的时候,就会在内存中存在。不用实例化,直接通过
类名直接调用,不会造成系统资源的格外浪费
2.不可以在静态方法中,调用普通方法
3.静态方法中的this,指调用静态方法的这个类
4.静态方法是可以被继承的
在静态方法中this指—>调用静态方法的类
class Person{constructor(name,age){this.name = name;this.age = age;}sayAge(){Person.sayName();console.log(this.age);}static sayName(){console.log(this)console.log("name")}}Person.sayName();
8.静态方法和继承
1.子类可以继承父类的静态方法<br /> 2.在子类的静态方法中调用父类的静态方法,可以通过super/this去调用
class Person{static baseUrl = "https://www.baidu.com"static sayName(){console.log("name")}}class Teacher extends Person{static sayAge(){super.sayName();console.log(super.baseUrl)console.log("age");}}Teacher.sayAge()console.log(Person.baseUrl)
9.总结
1.如何使用class去定义一个类eg:定义一个学生类,包含name-age两个属性,还包含sayName2.如何给一个类的原型上去添加多个属性/方法3.如何实现继承4.如何定义一个静态方法5.静态方法的特点5-1 通过类名调用5-2 不可以在静态方法中调用普通方法5-3 this指向问题-->类5-4 静态方法是可以被继承的。
