ES6 的继承方式

方法1:
class中的 constructor   属性
在使用new 创建实例化对象的时候  constructor 的 this 属性会
继承到 实例化对象中
方法2:
创建2个class 对象
class  子对象  extends  父对象
既然都要用到了类class,那么先来了解class:

class 的本质是 function。
它可以看作一个语法糖,让对象原型的写法更加清晰、更像面向对象编程的语法。

class Test {
    constructor(){
  		this.a = 1;
    }
}

var  xxx= new Text();  ⇒    xxx = { a:1  }

注意事项:

①类定义不会被提升,这意味着,必须在访问前对类进行定义,否则就会报错。
②类中方法不需要 function 关键字。
③方法间不能加分号。

第一种继承方式

步骤:

①创建一个对象;
②将构造函数的作用域赋值给新对象(因此this就指向了这个新对象);
③执行构造函数中的代码(为这个新对象添加属性);
④返回新对象
class Text{
    constructor(a,b){
        this.a=a;
        this.b=b;
    }
    hello(){
        console.log('hello  class')
    }
}

Text.prototype.c = 3
var  classA = new Text(1,2)

结果

①constructor中的this都继承到了这个实例化对象中,
②constructor外的方法都继承到了这个实例化对象中 ,但只能 通过__proto__找到,
③porototype原型上面的属性也继承到了这个实例化对象中(和函数类似),__proto__找到,
classA ==>{a:1,b:2 }  
它的__proto__上:有 hello() 和  c属性

第二种继承方式

第一种情况:子类没constructor属性时
class father{
  aaa(){
 	 console.log(this.a+' '+this.b);
	}
}


class son extends father{
  
}
①子类son继承父类father,子类没用定义constrcutor,则默认添加一个,
②在constrcutor中调用super函数,相当于调用父类的构造函数。
③调用super函数是为了在子类中获得父类的this,调用之后this指向子类。
第二种情况:子类有constructor属性时
class father{
  constructor(a,b){
   	this.a=a;
   	this.b=b;
  }
  aaa(){
 	 console.log(this.a+' '+this.b);
	}
}

class son  extends father{
    constructor(a,b){
        super(a,b);
        this.c=c;
    }
    bbb(){
        console.log(this.a+' '+this.b+''+this.c);
    }
}

注意事项:

①子类 constructor 方法中必须有 super ,且必须出现在 this 之前。
②super()中继承的参数和父类的保持一致。
③如果不调用super函数,子类就得不到this对象。super()作为父类的构造函数,只能出现在子类的constructor()中
④super指向父类的原型对象,可以调用父类的属性和方法。

封装

class Text{
    constructor(a, b) {
        this.a = a; 
        this.b = b;
    }
    get a(){
        return this.a;
    }
    set a(a){
        this.a = a;
    }
}

注意事项:

①getter 不可单独出现
②getter 与 setter 必须同级出现
③ 实例化时调用 set 方法 参数写入的时候
④读取时自动调用get方法
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

野生切图仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值