前端企业面试题:企业真实案例——36
程序员文章站
2022-06-04 14:45:37
...
用Proxy实现数组arr[-1]的访问,返回结果为数组的最后一位。
let arr = [100,200,300];
let pa = new Proxy(arr, {
//代理get方法,所有属性访问都会通过此方法
get(target, property, receiver){
/*
* target表示被代理对象本身,也就是arr
* property表示当前被访问的属性名(字符串类型)
* receiver表示代理对象,也就是pa
*/
if(/^-\d+$/.test(property)) { //根据正则判断是否为负数
return target[target.length+Number(property)];
}
return target[property]; //如果访问的属性不是负数,则正常返回
}
})
//测试
console.log(pa[0]) // 100
console.log(pa[1]) // 200
console.log(pa[2]) // 300
console.log(pa[-1]) // 300
console.log(pa[-2]) // 200
console.log(pa[-3]) // 100