zoukankan      html  css  js  c++  java
  • js hook代码

    
    
    <!DOCTYPE html>
    
    <html lang="en" xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <div>
            <input type="button" value="点击按钮" onclick="test1()" />
        </div>
    
        <script type="text/javascript">
            function test1(name) {
                var nv = window.navigater;
                console.log("test1 appName " + nv.appName);
                console.log("test1 appCodeName " + nv.appCodeName);
                console.log("test1 platform " + nv.platform);
            }
            
            var mynv = {
                appName:'张三',
                appCodeName:'李四',
                platform:'王五'
            };
            
            Object.defineProperty(window, 'navigater', {
              get: function() {
                console.log("get navigater");
                
                return mynv;
              }
            });
            
            var o = {}; // 创建一个新对象
    
            // 在对象中添加一个属性与数据描述符的示例
            Object.defineProperty(o, "a", {
              value : 37,
              writable : true,
              enumerable : true,
              configurable : true
            });
    
            // 对象 o 拥有了属性 a,值为 37
    
            // 在对象中添加一个设置了存取描述符属性的示例
            var bValue = 38;
            Object.defineProperty(o, "b", {
              // 使用了方法名称缩写(ES2015 特性)
              // 下面两个缩写等价于:
              // get : function() { return bValue; },
              // set : function(newValue) { bValue = newValue; },
              get() { return bValue; },
              set(newValue) { bValue = newValue; },
              enumerable : true,
              configurable : true
            });
    
            console.log("o.b " + o.b);
            
            // 重写 console.log 函数
            let flag = false;
            console.log = function (base) {
                return function () {
                    var arr = new Array("hooked");
                    base.apply(this, arr);
                    !flag && base.apply(this, arguments);
                }
            }(console.log);
            
            let test = {
                name: "小红"
            };
            test = new Proxy(test, {
                get(target, key) {
                  console.log('获取了getter属性');
                  return target[key];
                }
            });
            console.log(test.name);
        </script>
    </body>
    </html>
    
    
    
     

    <!DOCTYPE html>
    <html lang="en" xmlns="http://www.w3.org/1999/xhtml"><head>    <meta charset="utf-8" />    <title></title></head><body>    <div><input type="button" value="点击按钮" onclick="test1()" />    </div>
        <script type="text/javascript">        function test1(name) {var nv = window.navigater;console.log("test1 appName " + nv.appName);console.log("test1 appCodeName " + nv.appCodeName);console.log("test1 platform " + nv.platform);        }var mynv = {appName:'张三',appCodeName:'李四',platform:'王五'};Object.defineProperty(window, 'navigater', {  get: function() {console.log("get navigater");return mynv;  }});var o = {}; // 创建一个新对象
    // 在对象中添加一个属性与数据描述符的示例Object.defineProperty(o, "a", {  value : 37,  writable : true,  enumerable : true,  configurable : true});
    // 对象 o 拥有了属性 a,值为 37
    // 在对象中添加一个设置了存取描述符属性的示例var bValue = 38;Object.defineProperty(o, "b", {  // 使用了方法名称缩写(ES2015 特性)  // 下面两个缩写等价于:  // get : function() { return bValue; },  // set : function(newValue) { bValue = newValue; },  get() { return bValue; },  set(newValue) { bValue = newValue; },  enumerable : true,  configurable : true});
    console.log("o.b " + o.b);// 重写 console.log 函数let flag = false;console.log = function (base) {return function () {var arr = new Array("hooked");base.apply(this, arr);!flag && base.apply(this, arguments);}}(console.log);let test = {name: "小红"};test = new Proxy(test, {get(target, key) {  console.log('获取了getter属性');  return target[key];}});console.log(test.name);    </script></body></html>

    RT
  • 相关阅读:
    定理环境
    tcolorbox 宏包简明教程
    【专访】南科大数学系何炳生教授——四十年上下求索
    研究生导师为什么喜欢问学生家境?
    高德纳谈《具体数学》的诞生
    剑桥大学
    线性代数
    APPCAN的mas服务报错
    github删除仓库
    Angular2入门教程-2 实现TodoList App
  • 原文地址:https://www.cnblogs.com/Supperlitt/p/15234777.html
Copyright © 2011-2022 走看看