搜索引擎优化方法(谷歌、QQ支持实现低耦合可以通过代理拦截的方法)

优采云 发布时间: 2022-01-02 07:09

  搜索引擎优化方法(谷歌、QQ支持实现低耦合可以通过代理拦截的方法)

  谷歌、QQ支持,360、搜狗不支持

  可以通过使用代理代理来实现。不处理原类,创建新类并拦截,实现低耦合

  可以通过代理拦截的方法重写方法。

  //--------------示例 1--------------

  let obj = {

  webName: \'百度\',

  url: \'www.baidu.com\'

}

let p = new Proxy(obj,{

  get: function(target,key){

    return target[key]

  },

  set: function(target,key,value){

    target[key] = value

  }

});

p.webName = \'baidu\';

console.log(p.webName);

  //------------示例2------------

  代理实际上重载了点运算符

  var proxy = new Proxy(target,handler);

class Register{ // 定义一个类

  constructor(){

    this.prefix = \'\';

    this.name = \'\';

    console.log(\'构造完成\');

  }

}

let obj = new Register(); // 使用new方法新建一个类

let p = new Proxy(obj,{ // 定义一个代理,起到拦截作用 将使用new方法创建的类使用Proxy代理

  get: function(target,key){

    return target[key];

  },

  set: function(target,key,value){

    if(key == \'id\' && value == 15){

      target[\'prefix\'] = \'此人是逃犯\';

    }

    target[key] = value;

    if(key == \'name\'){

      value = target[key] + \',\' + target[\'prefix\'];

    }

    return Reflect.set(target,key,value); // 调用反射,当set全部结束,输出的时候会调动get方法

  }

});

p.id = 1; // . 会自动调用get和set方法

p.name = \'张三\'; // 相当于 调用set

console.log(p.name);

p.id = 15;

p.name = \'李四\';

console.log(p.name);

  示例:

  

  //-----------------------------------

  代理对象方法列表:

  方法说明

  handler.apply() 拦截Proxy实例的操作作为函数调用

  handler.construct() 拦截Proxy实例的操作作为构造函数调用

  handler.defineProperty() 拦截 Object.defineProperty 操作

  handler.deleteProperty() 拦截删除属性操作

  handler.enumerate() 该方法将被弃用,不推荐使用

  handler.get() 拦截属性的读操作

  handler.getOwnPropertyDescriptor() 拦截 Object.getOwnPropertyDescriptor() 操作

  handler.getPrototypeOf() 拦截获取原型对象的操作

  handler.has() 拦截属性检索操作

  handler.isExtensible() 拦截 Object.isExtensible() 操作

  handler.ownKeys() 拦截 Object.getOwnPropertyNames() 操作

  handler.preventExtensions() 拦截 Object.preventExtensions() 操作

  handler.set() 拦截属性赋值操作

  handler.setPrototypeOf() 拦截 Object.setPrototypeOf() 操作

  Proxy.revocable() 创建一个可撤销的代理实例

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线