js-challenges
js-challenges copied to clipboard
手写用 ES6proxy 如何实现 arr[-1] 的访问(滴滴2020)
let arr= [1,2,3,4]
let proxy = new Proxy(arr,{
get(target,key){
if(key<0){
return target[target.length+parseInt(key)]
}
return target[key]
}
})
console.log(proxy[-2]);
console.log(proxy[2]);
let a = [1, 2, 3];
let proxy = new Proxy(a, {
get(target, key) {
if (key === "-1") {
return target[target.length - 1];
}
},
});
console.log(proxy[-1]);
let arr = [1, 2, 3, 4]
let proxy = new Proxy(arr, {
get(target, key) {
if (key < 0) {
return target[target.length + parseInt(key)]
}
return target[key]
}
})
// 测试
console.log(proxy[-1]);
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
function observe(arr) {
const proxy = new Proxy(arr, {
get(target, key) {
let v = target[key];
if (typeof v === "object") {
observe(v);
}
if (key < 0) {
let len = target.length;
key = len - -key;
}
return target[key];
},
});
return proxy;
}
const arr2 = observe(arr);
console.log(arr2[-4]);
const arrProxy = (arr, index) => {
let proxy = new Proxy(arr, {
get: (target, key) => {
if(key < 0) {
return target[target.length - key*-1];
}
return target[key];
}
})
return proxy[index];
}
var a = [1, 2, 3, 4, 5];
console.log(arrProxy(a, -1));