请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

Object.defineProperty不是不能监听数组,是取舍

似乎···Object.defineProperty并不是不能监听数组,性能取舍

图片描述

ps:另外···老师你的push发音····emmmmmm

正在回答

1回答

你说的应该是这种遍历监听的方式吧?不知道谁想出来的这种方式,只能较真的说“能监听数组”,但是不能用。

这数组每变化一次,就得重新遍历监听一次,时间复杂度太高。

var arr = [1,2,3,4]
arr.forEach((item,index)=>{
    Object.defineProperty(arr,index,{
        set:function(val){
            console.log('set')
            item = val
        },
        get:function(val){
            console.log('get')
            return item
        }
    })
})
arr[1]; // get  2
arr[1] = 1; // set  1


1 回复 有任何疑惑可以回复我~
  • 提问者 RamirezNi #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-02-26 10:21:05
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信