标签:art 钩子 log property def dict val number 名称
// proxy [?prɑ?ksi] 代理
// // es5代理方式
// let obj = {}
// let newVal = ‘‘
// Object.defineProperty(obj, ‘name‘, { // 第一个变量名称当前对象 第二个为当前对象的属性值
// get() { // 第三个是一个对象在里面写一些拦截的方法
// return newVal
// },
// set(val) {
// console.log(‘set‘)
// newVal = val
// }
// })
// obj.name = ‘es‘
// console.log(obj.name) // => get imooc
//proxy
// let obj = {}
// let p = new Proxy(obj, {})
// p.name = ‘hky‘
// console.log(obj.name)
// for (let key in obj) {
// console.log(key, obj[key])
// }
// get 获取钩子函数 (拦截函数)
// let arr = [7, 8, 9]
// arr = new Proxy(arr, {
// get(target, prop) { // 对应2个参数 第一个当前处理的对象 第二个 传递的参数
// // console.log(target, prop)
// return prop in target ? target[prop] : ‘error‘
// }
// })
// console.log(arr[1]) // => 8
// console.log(arr[10]) // => error
// dictionary
// let dict = {
// ‘hello‘: ‘你好‘,
// ‘world‘: ‘世界‘
// }
// dict = new Proxy(dict, {
// get(target, prop) {
// return prop in target ? target[prop] : prop
// }
// })
// console.log(dict[‘world‘]) // => 世界
// console.log(dict[‘world‘]) // =>
// set 设置
// let arr = []
// arr = new Proxy(arr, {
// set(target, prop, val) { // 第一个参数当前目标对象 第二个设置属性值 第三个是要设置的值
// if (typeof val === ‘number‘) {
// target[prop] = val
// return true
// } else {
// return false
// }
// }
// })
// arr.push(5)
// arr.push(6)
// console.log(arr[0], arr[1], arr.length) // 5, 6, 2
// Proxy 代理一个对象的时候并不会破坏原有的东西
// has 判断当前key是否在对象里面 返回布尔值
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(9 in range)// => false
标签:art 钩子 log property def dict val number 名称
原文地址:https://www.cnblogs.com/hekeying/p/14500985.html