前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >代理模式

代理模式

作者头像
JS菌
发布2019-08-09 11:18:39
2700
发布2019-08-09 11:18:39
举报
文章被收录于专栏:JS菌JS菌

Proxy 方法创建代理模式

使用 Proxy API 可以方便的创建一个 get 和 set 拦截器

代码语言:javascript
复制
let obj = {
  name: "oli",
  canSave: false,
  blackbox: true
};

let proxyObj = new Proxy(obj, {
  set(obj, prop, val) {
    if (obj.canSave && prop === "name") {
      obj.name = val;
    } else return;
  },
  get(obj, prop) {
      if (obj.blackbox) {
          return null
      } else return obj[prop]
  }
});

Object.defineProperty 方法创建代理模式

在 ES6 之前,通常使用 Object.defineProperty 这个方法:

代码语言:javascript
复制
let obj = {
  _name: "oli", // 实际的 name
  canSave: false,
  blackbox: true
};

let proxyObj = Object.defineProperty(obj, "name", {
  set(val) {
    if (obj.canSave) {
      obj.name = val;
    } else return;
  },
  get() {
    if (obj.blackbox) {
        return null
    } else return obj._name
  }
});
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JS菌 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Proxy 方法创建代理模式
  • Object.defineProperty 方法创建代理模式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档