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

来源:4-6 vue如何监听数组变化

RamirezNi

2020-02-25

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

图片描述

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

写回答

1回答

双越

2020-02-26

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

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

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
1
RamirezNi
非常感谢!
2020-02-26
共1条回复

2024版 前端框架及项目面试 聚焦Vue3/React/Webpack

面向1-3年前端的框架及项目面试“刚需内容”

4664 学习 · 1644 问题

查看课程