使用代理拦截动态属性
Code
ts
const r1 = add[1][2][3] + 4 // 期望结果 10
const r2 = add[10][20] + 30 // 期望结果 60
const r3 = add[100][200][300] + 400; // 期望结果 1000
console.log(r1);
console.log(r2);
console.log(r3);
解析
ts
function createProxy(value = 0) {
const toPrimitive = () => value
return new Proxy({}, {
get(target, key) {
if (key === Symbol.toPrimitive) {
return toPrimitive
}
return createProxy(value + Number(key));
}
})
}
const add = createProxy()