假如我想让数组支持负数索引,实现如下效果
let a = [1,2,3];
console.log(a[-1]); // 3
提示:这样做可能会有问题,例如和其他程序员写的模块冲突,但是我们现在不管这个事情,就是想知道能不能实现。
我目前写了段如下的代码
const pyArray = function(a){
return new Proxy(a, {
get: function(target, prop, receiver) {
let index = Number(prop);
if (index < 0) {
prop = String(target.length + index);
};
return Reflect.get(target, prop, receiver);
}
});
};
let a = [1, 2, 3];
let b = pyArray(a)
console.log(b[-1]); // 3
console.log(a[-1]); // undefined
这里虽然用 Proxy 实现了类似的效果,但是并没有改变原生数组的行为。
能不能改写原生数组的行为,让 a[-1]也能返回 3 ?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.