美文网首页
数据劫持

数据劫持

作者: lucky_yao | 来源:发表于2020-10-08 07:27 被阅读0次

数据驱动视图:

1.监听指定的数据

2.指定的数据发生改变/被获取是触发指定的方法(set/get)

3.将新的数据 渲染到页面上去

新的问题:无法对新增的属性进行监听

在下面重新监听新的值

特别优待的数组(vue对数组的方法进行了重新封装,解决了该问题)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <div id="app">
        
        <h1>x:{{obj.x}}</h1>
        <h1>y:{{obj.y}}</h1>

        <h2>{{arr}}</h2>

    </div>
    
    <script src="js/vue.js"></script>

    <script>
        
        // let app = document.querySelector("h1");

        // function render(){
        //      console.log("渲染开始");
        //      app.innerHTML = obj.x + "/ " + obj.y;
        // }

        // let obj = {
        //     x: 1
        // }

        // render();

        // obj.x = 100;
        // render();

        // vue

        //数据驱动视图:
        //           1.监听指定的数据
        //           2.指定的数据发生改变/被获取时触发指定的方法(set/get)
        //           3.将新的数据 渲染到页面上去
        // let $data = {x:1};
        
        // Object.defineProperty(obj,'x',{
        //     set(newVal){
        //         $data.x = newVal;
        //         render();
        //     },
        //     get(){
        //         return $data.x;
        //     }
        // });
        // //问题: 无法对新增的属性进行监听
        // Object.defineProperty(obj,'y',{
        //     set(newVal){
        //         $data.y = newVal;
        //         render();
        //     },
        //     get(){
        //         return $data.y;
        //     }
        // });

        //特别优待的数组(vue对数组的方法进行了重新封装,解决了该问题)
        let app = new Vue({
            el:"#app",
            data: {
                obj:{
                    x:1
                },
                arr:[1,2,3]
            },
        });

        app.$set(app.obj.y);
        
    </script>
</body>
</html>

相关文章

  • 数据劫持:proxy / defineProperty

    proxy 数据代理、数据劫持 1.自动循环了 2.对象添加数据可以劫持 defineProperty数据劫持 1...

  • 1.3 对象的数据劫持

    observe(data)响应式原理; 数据劫持方法 对对象数据进行数据劫持 把data中的数据都使用Object...

  • 点击劫持ClickJacking

    点击劫持 图片覆盖 拖拽劫持与数据窃取 触屏劫持 防御ClickJackingframe busting可以用,但...

  • 自己动手实现MVVM

    1、数据劫持(vue):通过Object.defineProperty()去劫持数据每个属性对应的getter和s...

  • 个人手写的MVVM

    1.MVVM(入口函数) 为vm添加数据代理 调用其他函数(数据劫持,模版编译) 2.observer(数据劫持)...

  • 数据劫持

    数据驱动视图: 新的问题:无法对新增的属性进行监听 在下面重新监听新的值 特别优待的数组(vue对数组的方法进行了...

  • 数据劫持

    es6提供了一个defineProperty的函数,目的是劫持对象的属性,当属性变化时可立即捕获到。 这只是最简单...

  • vue 双向数据绑定原理

    vue双向数据绑定采用数据劫持结合系统-订阅者模式的方式,通过Object.defineProperty()来劫持...

  • vue实现双向绑定原理

    原理 vue数据双向绑定通过‘数据劫持’ + 订阅发布模式实现 数据劫持 指的是在访问或者修改对象的某个属性时,通...

  • 24,vue、vuex

    一,谈谈MVVM原理数据劫持 + 发布-订阅者。Object.defineProperty( )劫持getter和...

网友评论

      本文标题:数据劫持

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