整理下初学时做过的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就实现不了,因为 负数索引不是数组的属性
前者如果不用数据劫持(用另一个对象监听这个对象),就会栈溢出,而后者则没有这个问题
本文分享了如何使用proxy实现数组负索引操作,同时对比了proxy与Object.defineProperty在监听未知属性上的区别。通过实例解析了数据代理和数据劫持在两种方法中的优劣。
772

被折叠的 条评论
为什么被折叠?



