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"

  • 相关阅读:
    css 如何让背景图片拉伸填充避免重复显示
    CDHtmlDialog 基本使用
    RES协议
    Sata win7 热插拔(AHCI)
    __argc和__argv变量
    MFC进度条刷新处理
    SVN强制注释
    自动build服务器 CruiseControl.NET
    opencv Mat 像素操作
    std::string 用法
  • 原文地址:https://www.cnblogs.com/zhx119/p/12792396.html
Copyright © 2011-2022 走看看