我的编程空间,编程开发者的网络收藏夹
学习永远不晚

详解VUE中的Proxy代理

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

详解VUE中的Proxy代理

Proxy 是ES6中提供的一个非常强大的功能,可以用来代理另一个对象,从而拦截、监视并修改这个对象的各种操作

首先是Proxy()的参数:

  • arget:被代理的对象。
  • handler:被代理对象上的自定义行为,也就是对arget进行处理的地方

handler处理函数一都有:

  • get(target, propKey, receiver):拦截对象属性的读取操作。
  • set(target, propKey, value, receiver):拦截对象属性的设置操作,返回一个布尔值
  • has(target, propKey):拦截 propKey in proxy 操作,返回一个布尔值
  • deleteProperty(target, propKey):拦截对象属性的删除操作,返回一个布尔值
  • apply(target, object, args):拦截 Proxy 实例作为函数调用的操作。
  • construct(target, args, newTarget):拦截 Proxy 实例作为构造函数调用的操作,返回一个对象
  • ......

下面对get函数进行简单的演示:

let arr = [123,"ac","你好"]
arrPro = new Proxy(arr,{
    get(target,prop){
        // target 代表被代理的数组,也就是 [123,"ac","你好"]
        console.log(target)
        // prop 表示要访问的属性,也就是 0
        console.log(prop)
        return prop in target ? target[prop] : 'error'
    }
})
console.log(arrPro[0])

下面对set函数进行简单的演示:

let arr = []
let arrPro = new Proxy(arr,{
    set(target,prop,val){
        if(typeof val === "number"){
            target[prop] = val
            return true
        }else{
            return false
        }
    }
}) 
arrPro.push(5) 
console.log(arr)  //[5]

下面对has函数进行简单的演示:

let range = {
    start:1,
    end:5
}
range = new Proxy(range,{
    has(target,prop){
       return prop >= target.start && prop <= target.end
    }
})
console.log(2 in range) // true
console.log(6 in range) // false

get、set、deleteProperty小集合:

let user = {
    name: 'ac',
    age: 12,
    _password: 'xxx'
}
 
user = new Proxy(user, {
    get(target, prop) {
        if (prop.startsWith('_')) {
            throw new Error('不可访问')
        } else {
            return target[prop]
        }
    },
    set(target, prop, val) {
        if (prop.startsWith('_')) {
            throw new Error('不可设置')
        } else {
            target[prop] = val
            return true
        }
    },
    deleteProperty(target, prop) {
        if (prop.startsWith('_')) {
            throw new Error('不可删除')
        } else {
            delete target[prop]
            return true
        }
    }
})
console.log(user.age)  //12
console.log(user._password)  //Error:不可访问
 
user.age = 22
console.log(user.age)  //22
 
delete user.age
console.log(user.age)  //undefined

下面对apply函数进行简单的演示:

let sum = (...args) =>{
    let num = 0
    args.forEach(item =>{
        num += item
    })
    return num
}
 
sum = new Proxy(sum,{
    apply(target,ctx,args){
        return target(...args) * 2
    }
})
console.log(sum(2,5)) //14
console.log(sum.call(null,2,5)) //14
console.log(sum.apply(null,[2,5]))  //14

下面对construct函数进行简单的演示:

let User = class {
    constructor(name){
        this.name = name
    }
}
User = new Proxy(User,{
    construct(target,args,newTarget){
        console.log("代理拦截")  //代理拦截
        return new target(...args)  //User {name: 'ac'}
    }
})
 
console.log(new User('ac'))

vue3中就是用Proxy实现的双向数据绑定

到此这篇关于Proxy代理对象详解的文章就介绍到这了,更多相关Proxy代理内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

详解VUE中的Proxy代理

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

下载Word文档

猜你喜欢

详解VUE中的Proxy代理

这篇文章主要介绍了Proxy代理对象详解,Proxy是ES6中提供的一个非常强大的功能,可以用来代理另一个对象,从而拦截、监视并修改这个对象的各种操作,需要的朋友可以参考下
2023-05-16

实例详解vue中的代理proxy

这篇文章主要介绍了vue中的代理proxy,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-02-17

vue中如何配置proxy代理

这篇文章主要介绍了vue中如何配置proxy代理问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-01-14

一文带你了解Vue中的axios和proxy代理

这篇文章主要为大家详细介绍了Vue中的axios和proxy代理的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
2023-03-21

vue中proxy代理的用法(解决跨域问题)

这篇文章主要介绍了vue中的proxy代理的用法(解决跨域问题),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-12-09

Vue中的axios和proxy代理怎么配置

今天小编给大家分享一下Vue中的axios和proxy代理怎么配置的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.引入ax
2023-07-05

Vue代理报错404问题及解决(vue配置proxy)

这篇文章主要介绍了Vue代理报错404问题及解决(vue配置proxy),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-12-08

JS 中Proxy代理和 Reflect反射方法示例详解

这篇文章主要为大家介绍了JS 中Proxy代理和 Reflect反射方法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-11-13

详解nodejs通过代理(proxy)发送http请求(request)

有可能有这样的需求,需要node作为web服务器通过另外一台http/https代理服务器发http或者https请求,废话不多说直接上代码大家都懂的:var http = require('http') var opt = {host:'
2022-06-04

Java 动态代理中Proxy的使用方法

本篇文章给大家分享的是有关Java 动态代理中Proxy的使用方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。动态代理可以提供对另一个对象的访问,同时隐藏实际对象的具体事实
2023-06-17

编程热搜

目录