iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >ES6中Proxy有什么用
  • 263
分享到

ES6中Proxy有什么用

2024-04-02 19:04:59 263人浏览 独家记忆
摘要

这篇文章主要为大家展示了“es6中Proxy有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ES6中Proxy有什么用”这篇文章吧。具体如下:Proxy

这篇文章主要为大家展示了“es6中Proxy有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ES6中Proxy有什么用”这篇文章吧。

具体如下:

Proxy 用于修改对象某些操作的默认行为,可以对外界的访问进行过滤和改写,其概念类似于元编程

Proxy 让我们可以对任何对象的绝大部分行为进行监听和干涉,实现更多的自定义程序行为。在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截。

目前【兼容性】存在一定的问题,目前在chrome和ff浏览器中的非严格模式下可用,一些先进的技术即使在目前不能广泛应用,但随着时间的流逝,都将会进入程序员日常的编程中。

注: 博客整理时间:2018-03-24 16:21:15

初识Proxy

var obj = {name:'Joh'};
var proxy = new Proxy(obj, {
 get (target, key) {
  return 'test1';
 },
 set (target, key, value) {
  target[key] = value
 }
});
console.log(proxy.name); // test1 进行get取值
proxy.name = 'test2'; // 进行set设置
console.log(obj.name); // test2

通过Proxy对象进行拦截target对象的属性

完整的使用Proxy进行设置, 获取,修改和删除的案例

var obj = {name:'Joh',group:'g1',_type:'student'};
var proxy = new Proxy(obj, {
 get (target, key) {
  if(key[0]!== '_') {
   // return Reflect.get(target,key); // 效果等同于下面的return语句
   return target[key];
  };
 },
 set (target, key, value) {
  if(key[0]!== '_') {
   // Reflect.set(target,key,value);
   return target[key] = value;
  }
 },
 deleteProperty(target, key) {
  // 业务逻辑
  if(key[0] !== '_') {
   // Reflect.deleteProperty(target, key);
   delete target[key];
  }
 }
});
console.log(proxy.name); // Joh
console.log(obj.name); // Joh
proxy.name = 'Lily'; // 在非严格模式下的赋值操作,严格模式将会报错
console.log(obj.name); // Lily
delete proxy.name; // 未能成功删除,因为上面内部有判断
console.log(obj.name); // undefined 成功删除
delete proxy.group;
console.log(obj.group); // undefined 成功删除
delete proxy._type;
console.log(obj._type); // student
proxy.color='red';
console.log(obj.color); // red

其中借助Reflect实现和直接实现的效果等同

通过has方法和in关键字进行拦截的示例:

var obj = {name:"Joh",_name:"Lily"};
var proxy = new Proxy(obj, {
 has(target, key) {
  if(key[0] === '_'){
   return false;
  } else {
   return key in target;
  }
 }
});
console.log('has name attr: ', 'name' in proxy); // has name attr: true
console.log('has _name attr: ', '_name' in proxy); // has _name attr: false

使用ownKeys方法与for-in遍历过滤符合特定规则属性的示例

var obj = {name:"Joh",_name:"Lily", age:10, group:"g1"};
var proxy = new Proxy(obj, {
 ownKeys (target) {
  return Reflect.ownKeys(target).filter(key => key[0] !== '_');
 }
});
for(var k in proxy) {
 console.log(k); // 分别输出 name age group 过滤了 _name
}

通过apply方法对函数调用的拦截

function test() {
 console.log('hello world');
}
var proxyFun = new Proxy(test,{
 apply(target,ctx,args) {
  console.log('proxy apply');
  return Reflect.apply(target,ctx,args);
 }
});
proxyFun(); // 分别输出 proxy apply 和 hello world
// proxyFun.apply(); // 同样,分别输出 proxy apply 和 hello world
// proxyFun.call(); // 同样,分别输出 proxy apply 和 hello world

通过construct方法对构造函数实例化的拦截

function User() {
 console.log('this is a contructor');
}
var ClassProxy = new Proxy(User, {
 construct(target,args) {
  console.log('proxy construct');
  return Reflect.construct(target,args);
 }
});
new ClassProxy(); // 分别输出 proxy construct 和 this is a contructor

以上是“ES6中Proxy有什么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网JavaScript频道!

--结束END--

本文标题: ES6中Proxy有什么用

本文链接: https://www.lsjlt.com/news/73352.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • ES6中Proxy有什么用
    这篇文章主要为大家展示了“ES6中Proxy有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ES6中Proxy有什么用”这篇文章吧。具体如下:Proxy ...
    99+
    2024-04-02
  • ES6中的Proxy有什么用
    这篇文章主要介绍了ES6中的Proxy有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 创建一个简单的Pr...
    99+
    2024-04-02
  • ES6中Proxy的作用是什么
    这篇文章主要介绍“ES6中Proxy的作用是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“ES6中Proxy的作用是什么”文章能帮助大家解决问题。创建一个简单的Proxylet tar...
    99+
    2023-06-17
  • ES6中Proxy使用场景有哪些
    小编给大家分享一下ES6中Proxy使用场景有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!ES6 中的箭头函数、数组解构、...
    99+
    2024-04-02
  • Ext.js中Proxy有什么用
    这篇文章将为大家详细讲解有关Ext.js中Proxy有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一:描述Proxy被Store用来加载和保存数据。Proxy的类型主要分为两大种客户端代理和服务端...
    99+
    2023-06-04
  • JS中ES6代理Proxy怎么用
    这篇文章主要为大家展示了“JS中ES6代理Proxy怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JS中ES6代理Proxy怎么用”这篇文章吧。proxy...
    99+
    2024-04-02
  • es6中的proxy如何使用
    本篇内容主要讲解“es6中的proxy如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“es6中的proxy如何使用”吧! 在e...
    99+
    2024-04-02
  • ES6中的Proxy类如何使用
    这篇文章主要介绍了ES6中的Proxy类如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇ES6中的Proxy类如何使用文章都会有所收获,下面我们一起来看看吧。Object在 ES5 中,我们可以定义一个对...
    99+
    2023-07-06
  • MySQL-Proxy有什么用
    这篇文章主要为大家展示了“MySQL-Proxy有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL-Proxy有什么用”这篇文章吧。MySQL-P...
    99+
    2024-04-02
  • es6中的some有什么用
    本篇内容介绍了“es6中的some有什么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在es6中,some的作用是检测数组中是否存在指定条...
    99+
    2023-06-29
  • ES6中Proxy与Reflect怎么实现重载
    这篇文章主要介绍“ES6中Proxy与Reflect怎么实现重载”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“ES6中Proxy与Reflect怎么实现重载”文章能帮助大家解决问题。Proxy与Re...
    99+
    2023-06-17
  • es6中map()方法有什么用
    这篇文章将为大家详细讲解有关es6中map()方法有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 在es6中,map()方法用于对数组...
    99+
    2024-04-02
  • ES6中Array.from()方法有什么用
    小编给大家分享一下ES6中Array.from()方法有什么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Array.from()Array.from方法用于将两类对象转为真正的数组:类...
    99+
    2024-04-02
  • ES6中Class和Module有什么用
    小编给大家分享一下ES6中Class和Module有什么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、ClassES6引入了Class(类)这个概念,作为对象的模板。通过class关...
    99+
    2024-04-02
  • es6中Async函数有什么用
    这篇文章将为大家详细讲解有关es6中Async函数有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。async 函数async 函数,使得异步操作变得更加方便。它是 ...
    99+
    2024-04-02
  • ES6中Array.of()方法有什么用
    这篇文章主要为大家展示了“ES6中Array.of()方法有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ES6中Array.of()方法有什么用”这篇文...
    99+
    2024-04-02
  • Es6 中Generator函数有什么用
    本篇文章给大家分享的是有关Es6 中Generator函数有什么用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。ECMAScript 6 (简...
    99+
    2024-04-02
  • Zabbix中的Proxy是什么
    Zabbix中的Proxy是一种中间代理服务器,用于收集监控数据并将其发送到主Zabbix服务器。Proxy可以帮助分担主Zabbi...
    99+
    2024-03-13
    Zabbix
  • es6中的反引号有什么用
    这篇文章给大家分享的是有关es6中的反引号有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 es6中的反引号的作用:1、用于解析变量,语法为“`...
    99+
    2024-04-02
  • ES6对象有什么用
    这篇文章主要介绍了ES6对象有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。ES6全称 ECMAScript 6.0 ,是 JavaScript 的下一个版本标准,20...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作