整理下初学时做过的js基础编程题目和大家分享以下,如果大家觉得有用,别忘了点一下赞哦
proxy
写一个方法,实现arr[-1] = arr[arr.length-1]
const arr = createArr(1,2,3)
console.log(arr[-1])//3
方法:使用数据代理 proxy 实现
function createArr(...args){
let arr = Array.of(...args)
return new Proxy(arr,{
get(_,key){
key = key < 0 ? arr.length + Number(key) : key ;
return arr[key]
}
})
}
这里扩展下
Object.defineProperty
和proxy
的区别
前者不能对未知属性继续监听,而后者可以。
比如上面这题用Object.defineProperty
就实现不了,因为 负数索引不是数组的属性
前者如果不用数据劫持(用另一个对象监听这个对象),就会栈溢出,而后者则没有这个问题