JS第六天

A、ECMAScript支持面向对象编程,但不是用接口或类,对象可以在代码执行的过程中创建和增强,因而具有动态性而非严格定义的实体,在没有类的情况下,可以采用下列模式创建对象


1、工厂模式,使用简单的函数构建对象,为对象添加属性和方法,然后返回对象,这一模式后来被构造函数模式代替

2、构造函数模式,可以创建自定义的引用类型,可以想创建内置对象实例一样使用new操作符,不过,构造函数模式也有缺点,即为它的每一个成员都无法得到复用,包括函数,由于函数可以不局限于任何对象,(与对象具有松散的耦合的特点),因此没有理由不在多个对象间共享函数

3、原型模式,使用构造函数U盾prototype属性来指定那些应该共享的属性和方法,组合使用构造函数模式和原型模式,使用构造函数定义实力属性,而使用原型定义共享的属性和方法


B、JavaScript主要通过了原型链接实现继承,原型链接的构建是通过讲一个类型的实例赋值给另一个构造函数的原型的实现,子类型就能够访问超类型的所有属性和方法,这一点与基于类的继承很相似,原型链的问题是对象实例共享所有继承的属性和方法,因此不适合单独使用,解决这个问题是用构造函数,即为在子类型构造函数的内部调用超类型构造函数,这样的做法使每一个实例都具有了自己的属性,同时也保证了只使用构造函数模式来定义类型,使用最多的继承模式是组合继承,这样的模式使用原型链继承共享的属性和方法,而通过了借用构造函数继承实例属性.继承模式如下:


1、原形式继承,可以在不必要先赢一构造函数的情况下实现继承,其本质是执行对给定对象的浅复制,而复制得到的副本还可以得到进一步改造

2、寄生式继承,与原形式继承很相似,也是基于某个对象或者某些信息创建一个对象,然后增强对象,最后返回对象,为了解决组合继承模式由于多次调用了超类型构造函数而导致的低效率问题,可以将这个模式与组合聚成一起使用

3、寄生组合式继承,集寄生式继承和组合继承的优点与一身,是实现基于类型继承的最有效的方式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值