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

申请一个域名seo基本步骤

申请一个域名,seo基本步骤,邢台公司网站建设,门户类网站如何做策划1 监听对象的操作 2 Proxy类基本使用 3 Proxy常见捕获器 4 Reflect介绍和作用 5 Reflect的基本使用 6 Reflect的receiver Proxy-监听对象属性的操作(ES5) 通过es5的defineProperty来给对象中的某个参数添加修改和获取时的响应式。 单独设置defineProperty是只能一次设置一…

1 监听对象的操作

2 Proxy类基本使用

3 Proxy常见捕获器

4 Reflect介绍和作用

5 Reflect的基本使用

6 Reflect的receiver

Proxy-监听对象属性的操作(ES5)

通过es5的defineProperty来给对象中的某个参数添加修改和获取时的响应式。

单独设置defineProperty是只能一次设置一个响应式的,但是可以通过遍历还为每个参数添加响应式。这样子有个缺点就是如果对象里面有新添加的参数,那就没办法做到响应式了。

这里proxy的捕获器直接操作原对象了,不好,需要结合reflect来修改对象才是最好的,比较严谨。

<body><h2 class="name"></h2><script>const obj = {name: "why",age: 18,height: 1.88}// 需求: 监听对象属性的所有操作// 监听属性的操作// 1.针对一个属性// let _name = obj.name// Object.defineProperty(obj, "name", {//   set: function(newValue) {//     console.log("监听: 给name设置了新的值:", newValue)//     _name = newValue//   },//   get: function() {//     console.log("监听: 获取name的值")//     return _name//   }// })// 2.监听所有的属性: 遍历所有的属性, 对每一个属性使用definePropertyconst keys = Object.keys(obj)for (const key of keys) {let value = obj[key]Object.defineProperty(obj, key, {set: function(newValue) {console.log(`监听: 给${key}设置了新的值:`, newValue)value = newValue},get: function() {console.log(`监听: 获取${key}的值`)return value}})}// console.log(obj.name)// obj.name = "kobe"console.log(obj.age)obj.age = 17console.log(obj.age)// 什么是响应式?// const nameEl = document.querySelector(".name")// nameEl.textContent = obj.name// obj.name = "kobe"// obj.name = "james"</script></body>

Proxy-监听对象属性的操作(ES6

通过创建代理,修改代理来做到响应式。捕获器里面可以放置set和get方法等等。总共有13个。

这里proxy的捕获器直接操作原对象了,不好,需要结合reflect来修改对象才是最好的,比较严谨。

 

  const obj = {name: "why",age: 18,height: 1.88}// 1.创建一个Proxy对象const objProxy = new Proxy(obj, {//  这里都是捕获器的内容set: function(target, key, newValue) {console.log(`监听: 监听${key}的设置值: `, newValue)target[key] = newValue},get: function(target, key) {console.log(`监听: 监听${key}的获取`)return target[key]}})// 2.对obj的所有操作, 应该去操作objProxy// console.log(objProxy.name)// objProxy.name = "kobe"// console.log(objProxy.name)// objProxy.name = "james"objProxy.address = "广州市"console.log(objProxy.address)

Proxy-其他捕获器的监听方法

set、get、delete、in捕获器的使用。这里proxy的捕获器直接操作原对象了,不好,需要结合reflect来修改对象才是最好的,比较严谨。

  const obj = {name: "why",age: 18,height: 1.88}// 1.创建一个Proxy对象const objProxy = new Proxy(obj, {set: function(target, key, newValue) {console.log(`监听: 监听${key}的设置值: `, newValue)target[key] = newValue},get: function(target, key) {console.log(`监听: 监听${key}的获取`)return target[key]},deleteProperty: function(target, key) {console.log(`监听: 监听删除${key}属性`)delete obj.name},has: function(target, key) {console.log(`监听: 监听in判断 ${key}属性`)return key in target}})delete objProxy.nameconsole.log("age" in objProxy)

Proxy-监听函数对象的操作

apply、constructor的使用。这里proxy的捕获器直接操作原对象了,不好,需要结合reflect来修改对象才是最好的,比较严谨。

  function foo(num1, num2) {console.log(this, num1, num2)}const fooProxy = new Proxy(foo, {apply: function(target, thisArg, otherArgs) {console.log("监听执行了apply操作")target.apply(thisArg, otherArgs)},construct: function(target, otherArray) {console.log("监听执行了new操作")console.log(target, otherArray)return new target(...otherArray)}})// fooProxy.apply("abc", [111, 222])new fooProxy("aaa", "bbb")

Reflect-和Object的区别之一

reflect操作对象类型会比直接使用object的好。object有的,reflect都有。

 "use strict"const obj = {name: "why",age: 18}Object.defineProperty(obj, "name", {configurable: false})// Reflect.defineProperty()// 1.用以前的方式进行操作// delete obj.name// if (obj.name) {//   console.log("name没有删除成功")// } else {//   console.log("name删除成功")// }// 2.Reflectif (Reflect.deleteProperty(obj, "name")) {console.log("name删除成功")} else {console.log("name没有删除成功")}

Reflect-和Proxy共同完成代理

不要直接对原对象进行操作,可以通过reflect来做到,并且有很多好处。

  const obj = {name: "why",age: 18}const objProxy = new Proxy(obj, {set: function(target, key, newValue, receiver) {// target[key] = newValue// 1.好处一: 代理对象的目的: 不再直接操作原对象// 2.好处二: Reflect.set方法有返回Boolean值, 可以判断本次操作是否成功const isSuccess = Reflect.set(target, key, newValue)if (!isSuccess) {throw new Error(`set ${key} failure`)}},get: function(target, key, receiver) {}})// 操作代理对象objProxy.name = "kobe"console.log(obj)

Reflect-和Reflect设置receiver

1

 const obj = {_name: "why",set name(newValue) {console.log("this:", this) // 默认是objthis._name = newValue},get name() {return this._name}}// obj.name = "aaaa"// console.log(obj.name)// obj.name = "kobe"const objProxy = new Proxy(obj, {set: function(target, key, newValue, receiver) {// target[key] = newValue// 1.好处一: 代理对象的目的: 不再直接操作原对象// 2.好处二: Reflect.set方法有返回Boolean值, 可以判断本次操作是否成功/*3.好处三:> receiver就是外层Proxy对象> Reflect.set/get最后一个参数, 可以决定对象访问器setter/getter的this指向*/console.log("proxy中设置方法被调用")const isSuccess = Reflect.set(target, key, newValue, receiver)if (!isSuccess) {throw new Error(`set ${key} failure`)}},get: function(target, key, receiver) {console.log("proxy中获取方法被调用")return Reflect.get(target, key, receiver)}})// 操作代理对象objProxy.name = "kobe"console.log(objProxy.name)

Reflect-和construct结合的反射

1

  function Person(name, age) {this.name = namethis.age = age}function Student(name, age) {// Person.call(this, name, age)const _this = Reflect.construct(Person, [name, age], Student)return _this}// const stu = new Student("why", 18)const stu = new Student("why", 18)console.log(stu)console.log(stu.__proto__ === Student.prototype)

 

 

 

 

 

 

 

 

 

 

http://www.shuangfujiaoyu.com/news/48370.html

相关文章:

  • 西安网站开开发线下课程seo
  • 做时时网站要多少钱网络推广的平台
  • 昆明做网站建设国内免费顶级域名注册
  • 巴州网站建设库尔勒网站建设钟爱网络福州seo视频
  • 新网互联的网站黑马培训
  • 个人网站可以做资讯小说类seo顾问服务咨询
  • 公司网站实名制百度怎么精准搜索
  • 手机优化助手怎么样win10优化大师是官方的吗
  • vs网站制作我为什么不建议年轻人做销售
  • 新建网站推广给企业seo排名优化方法
  • 帝舵手表官方网站国内建站平台
  • 58同城承德网站建设合肥网站
  • 南昌做网站优化哪家好常见搜索引擎有哪些
  • 做网站给女朋友百度旗下推广平台有哪些
  • 做外贸的人经常用什么网站郑州seo线下培训
  • 济南网站建设公司哪家好交换链接营销
  • webapp网站培训教育
  • 一站式做网站企业公司网络优化方案
  • 网络科技有限公司网站泉州seo优化
  • 网站新闻不添加关键词超链接对优化有影响吗百度搜索引擎优化相关性评价
  • 生物技术网站开发今日财经新闻
  • 古尔邦节网站建设如何进行网站性能优化?
  • 游戏网站建设平台网络营销专业是做什么的
  • 做网站欢迎页什么意思网络工具
  • 东莞建站公司快荐全网天下特别好2024年瘟疫大爆发
  • 深圳高端婚介公司seo排名怎么看
  • 网站开发测试阶段网站seo哪里做的好
  • 怎样做网站 网页品牌推广活动有哪些
  • 寻甸马铃薯建设网站b2b电子商务网
  • 苏州知名网站建设定制怎么制作网站二维码