当前位置: 首页 > news >正文

国外做的好点电商网站seo品牌优化百度资源网站推广关键词排名

国外做的好点电商网站,seo品牌优化百度资源网站推广关键词排名,网站建设合同技术开发合同,哪种编程语言可以做网站文章目录 1 Proxy代理1.1 get方法1.2 set方法1.3 has方法1.4 this问题 2 Reflect对象2.1 代替Object的某些方法2.2 修改某些Object方法返回结果2.3 命令式变为函数行为2.4 配合Proxy 1 Proxy代理 Proxy如其名,它的作用是在对象和和对象的属性值之间设置一个代理&am…

文章目录

  • 1 Proxy代理
    • 1.1 get方法
    • 1.2 set方法
    • 1.3 has方法
    • 1.4 this问题
  • 2 Reflect对象
    • 2.1 代替Object的某些方法
    • 2.2 修改某些Object方法返回结果
    • 2.3 命令式变为函数行为
    • 2.4 配合Proxy

1 Proxy代理

Proxy如其名,它的作用是在对象和和对象的属性值之间设置一个代理,获取该对象的值或者设置该对象的值, 以及实例化等等多种操作, 都会被拦截住, 经过这一层我们可以统一处理,我们可以认为它就是“代理器”。

ES6之前:

let obj = {}// let arr = [1,2,3] // push pop
// console.log(box)
Object.defineProperty(obj, "data", { // obj--对象,data--属性get(){console.log("get")return box.innerHTML},set(value){console.log("set",value)// 设置 dombox.innerHTML = value}
})console.log(obj)

1.1 get方法

let target = {}
let proxy = new Proxy(target, {get(target, prop){return target[prop]}
})

1.2 set方法

let target = {}
let proxy = new Proxy(target, {get(target, prop){return target[prop]},set(target, prop, value){if(prop === "data"){box.innerHTML = value}target[prop] = value;}
})

1.3 has方法

has捕获器,拦截对象属性的in操作符的调用,当使用in操作符来检查一个属性是否存在于一个对象时,如果对象是个proxy,has捕获器就会被调用。

let target = {_prop: "内部数据"
}
let proxy = new Proxy(target, {get(target, prop) {return target[prop]},set(target, prop, value) {if (prop === "data") {box.innerHTML = value}target[prop] = value;},has(target, key) {if (key[0] === '_') {return false;}return key in target;}
})

1.4 this问题

let target = new Set()
const proxy = new Proxy(target, {get(target, key) {const value =  target[key]// 遇到Function都手动绑定一下this// 正常调用时,this指向proxy// bind修正后,value方法的this指向target对象if(value instanceof Function) {console.log(`访问${value}方法了`)return value.bind(target)// 不能是call / apply,改变页面加载之后就立即执行,同步代码// bind 不会立即执行原函数,异步代码 }return value}
})
proxy.add(1)

Proxy本质上属于元编程非破坏性数据劫持,在原对象的基础上进行了功能的衍生而又不影响原对象,符合松耦合高内聚的设计理念。

2 Reflect对象

Reflect可以用于获取目标对象的行为,它与Object类似,但是更易读,为操作对象提供了一种更优雅的方式。它的方法与Proxy是对应的。

2.1 代替Object的某些方法

const obj = {
};
Reflect.defineProperty(obj, 'name', {value: 'kerwin',writable: false,configurable:false
});

2.2 修改某些Object方法返回结果

// 老写法
try {Object.defineProperty(target, property, attributes);// success
} catch (e) {// fail
}// 新写法
if(Reflect.defineProperty(target, property, attributes)) {// success
} else {// fail
}

2.3 命令式变为函数行为

const obj = {name:"kerwin"
};
//老写法
console.log("name" in obj) //true
//新写法
console.log(Reflect.has(obj, 'name')) //true//老写法
delete obj.name
//新写法
Reflect.deleteProperty(obj, "name")

2.4 配合Proxy

Reflect.set()和Reflect.get()。

let obj = {name:"kerwin"
}Reflect.set(obj, "age", 100)
console.log(Reflect.get(obj, "name"))
let target = new Set()
const proxy = new Proxy(target, {get(target, key) {const value = Reflect.get(target, key)if (value instanceof Function) {console.log(`访问${value}方法了`)return value.bind(target)}return value},set() { // set(target, key, value)return Reflect.set(...arguments)}
})
proxy.add(1)
let arr = [1, 2, 3]
let proxy = new Proxy(arr, {get(target, key) {console.log('get', key)return Reflect.get(...arguments)},set(target, key, value) {console.log('set', key, value)return Reflect.set(...arguments)}
})
proxy.push(4)
// 能够打印出很多内容
// get push     (寻找 proxy.push 方法)
// get length   (获取当前的 length)
// set 3 4      (设置 proxy[3] = 4)
// set length 4 (设置 proxy.length = 4)
http://www.ds6.com.cn/news/27770.html

相关文章:

  • 小鼠标网站建设网站搭建的流程
  • 怎样设置个人网站年轻人不要做网络销售
  • 南昌网站建设案例营销顾问
  • 微信网站欣赏找回今日头条
  • 龙岩找工作网站seo排名如何优化
  • 共享网站的建设与规划seo链接优化建议
  • 外贸网站建设公司青岛网站制作的服务怎么样
  • 济源做网站的公司网上教育培训机构
  • 政务公开既网站信息化建设会议网页制作的软件有哪些
  • 做网站好还是做app好怎么从网上找国外客户
  • wordpress的音乐插件济宁seo优化公司
  • 什么网站做玩具的外贸网站营销推广
  • 国家建设部防化工程师网站官网2022双11各大电商平台销售数据
  • 公司网站日常维护做哪些抖音流量推广神器软件
  • 网站刷流量有用吗厦门seo小谢
  • 深圳网站制作开发品牌软文
  • 广厦建设集团官方网站中国最新军事新闻直播
  • 境外社交网站上做推广关键词智能调词工具
  • 成都网站建设定百度优化关键词
  • 青岛专用网站制作天津百度分公司
  • 手机网站系统python培训
  • 手机网站智能管理系统跨境电商网站开发
  • 茶文化网站建设的可行性分析杭州最好的seo公司
  • 杭州公司网站html网页制作软件有哪些
  • 签约网站做PPT百度推广培训机构
  • 有关做生态环境的官方网站seo外链推广
  • 网站建设总体规划包括哪些方面企业推广策略
  • 包头怎样做网站百度收录网站要多久
  • 河北中保建设集团网站首页网站制作的流程
  • 网页设计实训总结600字西安网站seo哪家公司好