1.object assign

  1. class Person{
  2. constructor(name,age){
  3. this.name=name;
  4. this.age=age;
  5. }
  6. sayName(){
  7. console.log(this.name)
  8. }
  9. }
  10. // Person.prototype.sayAge = function(){
  11. // console.log(this.age);
  12. // }
  13. Person.prototype= { //不允许以字面量形式添加属性
  14. sayAge(){
  15. console.log(this.age)
  16. }
  17. }
  18. var s=new Person("meng", 21);
  19. s.sayAge()

方法:Object assign

  1. Object.assign(Person.prototype,{
  2. sayAge(){
  3. console.log(this.age)
  4. },
  5. show(){
  6. console.log("show")
  7. }
  8. })

_

2.私有属性

  1. class Person{
  2. skill="css"//默认为私有属性
  3. constructor(name,age){
  4. this.name=name;
  5. this.age=age;
  6. }
  7. sayName(){
  8. console.log(this.name)
  9. }
  10. }
  11. var s=new Person("meng",21);
  12. console.log(s)

3.class extends类继承

  1. class Person {
  2. constructor(name, age) {
  3. this.name = name;
  4. this.age = age;
  5. }
  6. sayName() {
  7. console.log(this.name)
  8. }
  9. }
  10. class Teacher extends Person {
  11. //类继承之后,构造函数第一行必须写super关键字 去继承父类的属性
  12. constructor(name, age, skill) {
  13. super(name, age);
  14. this.skill = skill;
  15. }
  16. //在子类的方法中调用父类的方法 可以通过this/super去调用
  17. show(){
  18. super.sayName()
  19. //this.sayName()
  20. }
  21. }
  22. var t=new Teacher("meng",21,"css");
  23. t.show();
  24. console.log(t)

4.static 静态

//静态属性,静态方法
// 属于类所独有的 特点:通过类名去调用

4.1静态属性

  1. class Person{
  2. static BaseUrl = "https://www.baidu.com";
  3. }
  4. console.log(Person.BaseUrl) // 通过类名去调用

4.2静态方法

  1. class Person{
  2. constructor(name,age){
  3. this.name=name;
  4. this.age=age;
  5. }
  6. static sayName(){
  7. console.log("name")
  8. }
  9. }
  10. var s=new Person("meng",21);
  11. Person.sayName();

4.3静态方法和普通方法

//普通方法可以调用静态方法(用类名调用)
// 静态方法不能调用普通方法

  1. class Person{
  2. constructor(name,age){
  3. this.name=name;
  4. this.age=age;
  5. }
  6. sayAge(){
  7. Person.sayName();
  8. console.log(this.age);
  9. }
  10. static sayName(){
  11. this.sayAge()
  12. console.log("name")
  13. }
  14. }
  15. var s=new Person("meng",21);
  16. s.sayAge();
  17. Person.sayName();

5. static-this

  1. /* 静态方法:
  2. 1.静态方法是属于类所独有的,类创建的时候,就会在内存中存在。不用实例化,直接通过
  3. 类名直接调用,不会造成系统资源的格外浪费
  4. 2.不可以在静态方法中,调用普通方法
  5. 3.静态方法中的this,指调用静态方法的这个类
  6. 4.静态方法是可以被继承的
  7. */
  8. /* 在静态方法中this指-->调用静态方法的类
  9. */
  10. class Person{
  11. constructor(name,age){
  12. this.name=name;
  13. this.age=age;
  14. }
  15. sayAge(){
  16. Person.sayName();
  17. console.log(this.age);
  18. }
  19. static sayName(){
  20. console.log(this) /在静态方法中this指-->调用静态方法的类(Person)/
  21. console.log("name")
  22. }
  23. }
  24. Person.sayName();

6.静态方法和继承

  1. /*
  2. 1.子类可以继承父类的静态方法
  3. 2.在子类的静态方法中调用父类的静态方法,可以通过this,super调用
  4. */
  5. class Person{
  6. static baseUrl="http://www.baidu.com"
  7. static sayName(){
  8. console.log("name")
  9. }
  10. }
  11. class Teacher extends Person{
  12. static sayAge(){
  13. super.sayName();
  14. console.log(this.baseUrl)
  15. console.log("age")
  16. }
  17. }
  18. Teacher.sayName()
  19. Teacher.sayAge()
  20. console.log(Person.baseUrl)