zoukankan      html  css  js  c++  java
  • Object.defineProperty()--数据劫持原理

    数据劫持原理

    html:

    <!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>

    </body>
    <script>
        let obj = {
            name: 'zs'
        }
        // 数据劫持的核心属性
        Object.defineProperty(obj, 'name', {
            enumerable: true,
            configurable: true,
            get() {
                // 每次获取对象的这个属性的时候,就会被这个get方法给劫持到
                console.log('get执行了')
            },
            // 每次设置这个对象的属性的时候,就会被set方法劫持到
            // 设置的值也会劫持到
            set(newValue) {
                console.log('set方法执行了');
                console.log(newValue)

            }
        })
    </script>

    </html>

    在浏览器中打开;然后再控制台输出obj.name,会得到下面的结果显示:

    obj.name
    1.html:23 get执行了
    undefined

    接着再在控制台输出’obj.name = ‘ls’`,结果如如下所示:

    obj.name="ls"
    1.html:28 set方法执行了
    1.html:29 ls
    "ls"

  • 相关阅读:
    shiro (java安全框架)
    day13
    自己修改select的样式(修改select右边的小三角)
    如何让2个并列的div根据内容自动保持同等高度
    js定时显示广告代码
    jquery 模块拖拽
    JS获取浏览器可视区域尺寸
    jQuery事件绑定的最佳实践
    flot图插件使用
    计算json的和
  • 原文地址:https://www.cnblogs.com/zhx119/p/12792396.html
Copyright © 2011-2022 走看看