《你不知道的javascript - 上册》笔记 二

4.类

ES6 class 类是一种设计模式 

类实例有一个特殊的类方法构造 方法名与类名相同 构造函数

继承 本质是复制

多态 在继承链的不同层次中一个方法名可以被多次定义,当调用方法时会自动选择合适的定义。

super  静态绑定

js中对象是关联关系 所以为了模拟复制行为 “混入” 显示(手动复制)和隐式(this重绑定)

5. 原型

属性设置和屏蔽

mmyObject.foo = "bar"

- 如果对象属性中包含 则修改已有属性

- 对象中不存在 则访问原型链中 不存在 则在obj对象上添加相应属性 存在还存在三种可能

1)属性可读可写 则在obj上添加属性 屏蔽掉原型链上的属性 “属性屏蔽”

2)只读 writable:flase 则无法修改也无法创建

3)属性是setter 则调用此setter

原型继承 Object.create(..) 创建一个新对象并关联指定对象的原型

 - = 直接赋值 并不会关联上去 而是直接引用 更改引用方会影响被引用方

- 使用new 确实会关联 但如果函数有一些副作用会影响其后代 后果很严重

缺点:创建新对象抛弃旧对象 不能修改已有的默认对象

ES6 添加辅助函数 Object.setPrototypeOf(..) 修改原型关联

Object.setPrototypeOf( Bar.prototype, Foo.prototype );

6 行为委托

基于原型链 区别于类的另一种设计模式 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值