JavaScript技术js css html

2022-05 JavaScript基础学习 - 7

2022-05-11  本文已影响0人  网恋被骗二块二

ps:只总结我不清楚的点了

类(class)是 ECMAScript6 新增的。实际上也是一种语法题,其本质是构造函数。

类的继承,在构造器中使用 super() ,之后可以在别的地方通过 super 打点调用继承类的静态方法

类可以继承如 Array 之类的大对象,实现在 Array 上新增属性和方法操作

extends 只能继承一个类,所以为了实现多个类,一种方法是定义一组“可嵌套”的函数,如B继承A,C继承B,最后继承C

第九章 代理与反射

proxy 代理

代理是目标对象的抽象

使用:let proxy = new Proxy(target, handler)

Proxy 监听 target 目标对象,通过 handler 拦截对象对 target 的操作进行拦截处理;简单来说就是操作 target 时,会先通过 handler 去对这次操作进行处理,最后才执行到 target 处。

Proxy 拦截的方法有:

  1. get(target, propKey, receiver)
    拦截目标对象的属性的读取(目标对象,读取的属性key,proxy实例本身)
  2. set(target, propKey, value, receiver)
    拦截目标对象设置属性值的操作(目标对象,设置的属性Key,属性值,proxy实例本身)
  3. has(target, key)
    拦截 propKey in proxy 的操作,返回 boolean 值
  4. deleteProperty(target, propKey)
    拦截 delete proxy[propKey] 的操作,返回 boolean 值
  5. ownKeys(target)
    拦截 Object.key(proxy)、for...in...等循环,返回一个数组,且内容只能是 propKey,其他内容不会显示
  6. getOwnPropertyDescriptor(target, propKey)
    拦截 Object.getOwnPropertyDescriptor,返回对象的属性描述
  7. defineProperty(target, propKey, propDesc)
    拦截 Object.defineProperty,返回一个布尔值
  8. preventExtensions(target)
    拦截 Object.preventExtensions(proxy)[此方法将对象配置为不可扩展],返回一个布尔值
  9. getPrototypeOf(target)
    拦截 Object.getPrototypeOf(proxy)[此方法获取对象的原型对象],返回一个对象
  10. isExtensible(target)
    拦截 Object.isExtensible(proxy)[此方法判断对象是否可扩展],返回一个布尔值
  11. setPrototypeOf(target, proto)
    拦截 Object.setPrototypeOf(proxy, proto)[设置对象的原型对象],返回一个布尔值
  12. apply(target, object, args)
    拦截 Proxy 实例作为函数调用的操作
  13. construct(target, args)
    拦截 Proxy 实例作为构造函数的调用

从我的理解来说,Proxy 应该是一种升级版的 defineProperty,它能够监听更多的对象方法调用,并且是监听整个对象,而不像 defineProperty 只是监听对象里的属性。

上一篇下一篇

猜你喜欢

热点阅读