美文网首页
数组变异方法(vue: ^2.0)

数组变异方法(vue: ^2.0)

作者: 鹏飞_6b7f | 来源:发表于2019-11-02 09:35 被阅读0次

    Object.defineProperty 监听拦截中存在的一些问题

    @:Vue框架中监听数组属性值的变化

    Object.defineProperty(x, '?' , {})无法指定数组中需要监听的属性值

    这时我们通过变异的方法来处理(拦截push方法)

    🌰

    let arr = [1,2,3]

    let push = Array.prototype.push;

    Array.prototype.push = function (...args) {

        console.log( '变异方法' ) // 监听处理

        push( ...args )  // 这里需要处理this指向问题

        push.call( this, ...args )

    }

    arr.push(args)

    上面通过重写push方法来处理,当有push方法调用时会执行我们自定义的push方法,每次有push动作都会被监听到了

    上面只是一个栗子

    数组方法: push pop shift unshift splice sort reverse 都可以用这种方法处理

    有些数组方法为啥没改写?

    这是因为像filter map 这些方法 并不是改原有数组,而是返回一个新数组

    本人的一点总结,如有不足之处,多多指点

    相关文章

      网友评论

          本文标题:数组变异方法(vue: ^2.0)

          本文链接:https://www.haomeiwen.com/subject/wpjcbctx.html