构造函数的封装 继承 多态

太过爱你忘了你带给我的痛 2022-11-21 14:46 204阅读 0赞

构造函数的封装

  1. function aa(name){
  2. this.name = name,
  3. this.run=function(){
  4. }
  5. }
  6. aa.prototype.age= 18
  7. var b = new aa()

继承

面向对象编程思想,一般都是基于class类语法的,但是在ECSA6之前js没有class,我们使用 构造函数来替代

  1. function aa(name){
  2. this.name = name,
  3. }
  4. aa.prototype = {
  5. run:function(){ alert(this.name+'会跑')},
  6. eat:function(){
  7. alert(this.name+"会吃")
  8. }
  9. }
  10. function bb(name,color){
  11. aa.call(this,{ //构造函数的伪装
  12. //call 方法是改变 aa函数的 this 指向的, 指向第一个参数
  13. name:name,
  14. color:color
  15. })
  16. }
  17. //1原型链 ,继承父一级的方法
  18. //使用遍历的形式继承原型里面的东西,这样不会影响到父级的原型
  19. for(var a in aa.prototype){
  20. bb.prototype[a] = aa.prototype[a]
  21. }//注意不要直接赋值 bb.prototype = aa.prototype
  22. //2 bb.prototype = Object.create(aa.prototype)
  23. //3调用构造函数写法 aa.prototype = new aa()
  24. var bb2 = new bb('张三','绿色')

bb.prototype = aa.prototype
不提倡 因为这个是通过赋值的形式拿过来的,bb原型修改会影响他的父级 aa原型的内容
如果 aa 有d多个子集呢?所以这种方法不合适

多态

  1. function aa(name){
  2. this.name = name;
  3. this.run=function(){
  4. console.log(this.name+'会跑')
  5. }
  6. }
  7. //通过原型的方式添加 eat 方法,
  8. // a = new aa() b=new aa() 原型属性和方法,这些对象共用的
  9. aa.prototype.eat=function(){
  10. alert(this.name+'爱吃跳跳糖')
  11. }
  12. var zhangsan = new aa('张三')
  13. // zhangsan.eat()
  14. //函数aaPlus 继承 函数 aa
  15. function aaPlus(name,color){
  16. //通过伪装this,原型不会被继承到
  17. aa.call(this,name)
  18. this.color=color
  19. }
  20. //继承父级的原型,属性和方法
  21. for(var i in aa.prototype){
  22. aaPlus.prototype[i] = aa.prototype[i]
  23. }
  24. var lisi = new aaPlus('李四','green')
  25. // 对象想改变原型 使用 __proto__
  26. //函数改变原型 prototype
  27. lisi.__proto__.eat=function(){
  28. alert(this.name+"爱吃"+this.color+"颜色的棒棒糖")
  29. }
  30. lisi.run()
  31. lisi.eat()
  32. zhangsan.eat()

发表评论

表情:
评论列表 (有 0 条评论,204人围观)

还没有评论,来说两句吧...

相关阅读

    相关 封装继承

    封装: 含义: 1. java中,对象就是一个封装体。 2. 把对象的属性和服务结合成一个独立的单位,并尽可能隐蔽对象的内部细节(尤其是私有数据) 3. 目的

    相关 封装继承

    一、封装:   封装是实现面向对象程序设计的第一步,封装就是将数据或函数等集合在一个个的单元中(我们称之为类)。被封装的对象通常被称为抽象数据类型。   封装的意义:
  

    相关 继承封装

    一、封装:   封装是实现面向对象程序设计的第一步,封装就是将数据或函数等集合在一个个的单元中(我们称之为类)。被封装的对象通常被称为抽象数据类型。 封装的意义:   

    相关 继承 封装

    1.继承的好处:方便我们优化代码,提高扩展性 继承的使用: 父类的引用指向了子类的对象,如果用父类的这个引用指向了多个子类的对象,那么这个引用就可以调用这多个子类从父类

    相关 封装继承

    面向对象的三个基本特征 面向对象的三个基本特征是:封装、继承、多态。其中,封装 可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代

    相关 封装继承

    1、封装      定义:将某些东西包装隐藏,让外界无法直接访问,只能通过某些特定的方式访问。     目的:增强安全性,简化编程,使用者不用了解具体的实现细节,而只是通过