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

oss的wordpress插件seo刷词

oss的wordpress插件,seo刷词,昆明网站建设介绍,微商商城官网在某些时候,我们希望定义一些数据是只读的,不允许被修改,从而实现对数据的保护,即为 readonly 只读本质上也是对数据对象的代理,我们同样可以基于之前实现的 createReactiveObject 函数来实现,可以为此函数…

在某些时候,我们希望定义一些数据是只读的,不允许被修改,从而实现对数据的保护,即为 readonly

只读本质上也是对数据对象的代理,我们同样可以基于之前实现的 createReactiveObject 函数来实现,可以为此函数添加第三个参数 isReadonly,如下:

function createReactiveObject(value, isShallow = false, isReadonly = false){}

而有了这个参数之后,我们还需要对拦截器进行其他操作,修改或者删除一个对象的属性,都是改变此对象,因此我们需要针对这两个进行拦截,如下:

const noWarnKey = [RAW_KEY, IS_REACTIVE, ITERATE_KEY]// set
function baseSet(isReadonly) {return function set(target, key, newVal, receiver) {// isReadonly 为 true 时,禁止修改,而一些内部属性则忽略if (isReadonly && !noWarnKey.includes(key)) {// 并弹出警告console.warn('只读属性 ', key, ' 禁止修改')return true}const oldVal = target[key]const type = Object.prototype.hasOwnProperty.call(target, key) ? TrggerType.SET : TrggerType.ADDconst result = Reflect.set(target, key, newVal, receiver)if (!result) returnif (receiver[RAW_KEY] === target) {if (!Object.is(oldVal, newVal)) {trigger(target, key, type)}}return result}
}// delete
function baseDeleteProperty(isReadonly) {return function deleteProperty(target, key) {if (isReadonly && !noWarnKey.includes(key)) {console.warn('只读属性 ', key, ' 禁止删除')return true}const hadKey = Object.prototype.hasOwnProperty.call(target, key)const result = Reflect.deleteProperty(target, key)if (hadKey && result) {trigger(target, key, TrggerType.DELETE)}return result}
}// get
function baseGet(isShallow, isReadonly) {return function get(target, key, receiver) {if (key === RAW_KEY) {return target}// 只有当前的对象是一个非只读数据时,才需要收集依赖if (!isReadonly) {track(target, key)}const result = Reflect.get(target, key, receiver)if (isShallow) return resultif (typeof result === 'object' && result !== null) {return reactive(result)}return result}
}function createReactiveObject(value, isShallow = false) {if (typeof value !== 'object' || value === null) {console.warn('value 必须是一个对象')return value}if (reactiveMap.has(value)) {return reactiveMap.get(value)}if (isReactive(value)) return valueconst proxy = new Proxy(value, {get: baseGet(isShallow),set: baseSet(isReadonly),has,ownKeys,deleteProperty: baseDeleteProperty(isReadonly)})proxy[IS_REACTIVE] = truereactiveMap.set(value, proxy)return proxy
}function readonly(value) {return createReactiveObject(value, false, true)
}

现在我们写一段代码进行一下测试:

const obj = { a: 1 }
const r1 = readonly(obj)
r1.a++console.log(r1)

结果如图:

在这里插入图片描述

不过目前还存在一个问题,目前的只读只能处理成浅响应,案例如下:

const obj = {a: 1,b: {c: 3}
}
const r1 = readonly(obj)
r1.b.c++console.log(r1)

测试结果如图:

在这里插入图片描述

我们虽然在创建 readonly 函数时,给 createReactiveObject 的第二个参数是 false,表示是深响应的,但从结果可以看到,没有被拦截,而且依然被修改了。

所以按照之前的经验,如果要深处理,就直接进行递归处理即可,所以我们可以进行如下修改:

function baseGet(isShallow, isReadonly) {return function get(target, key, receiver) {if (key === RAW_KEY) {return target}// 只有当前的对象是一个非只读数据时,才需要收集依赖if (!isReadonly) {track(target, key)}const result = Reflect.get(target, key, receiver)if (isShallow) return result// 在此处进行递归处理if (typeof result === 'object' && result !== null) {// 若开启了只读,则使用 readonly 函数包装结果,实现递归处理每一层return isReadonly ? readonly(result) : reactive(result)}return result}
}

我们在使用之前的测试案例,执行 r1.b.c++ ,来查看一下结果,如图:

在这里插入图片描述

而如果要实现浅响应,那就更加简单了,如下:

function shallowReadonly(value) {// 只需要将 isShallow 设置为 true 即可,表示只处理第一层// - 设置 isShallow 为 true 后,在 get 中,就会直接返回这个属性的原有的值,不做代理、只读或者其他处理return createReactiveObject(value, true, true)
}

文章转载自:
http://hereinbelow.nrpp.cn
http://frostfish.nrpp.cn
http://biofuel.nrpp.cn
http://formicarium.nrpp.cn
http://ecocline.nrpp.cn
http://sakawinki.nrpp.cn
http://surfrider.nrpp.cn
http://nicene.nrpp.cn
http://triboluminescence.nrpp.cn
http://quatrefoil.nrpp.cn
http://barcelona.nrpp.cn
http://sloot.nrpp.cn
http://jv.nrpp.cn
http://kashrut.nrpp.cn
http://apperception.nrpp.cn
http://kathy.nrpp.cn
http://cryptomeria.nrpp.cn
http://empathize.nrpp.cn
http://mavournin.nrpp.cn
http://epu.nrpp.cn
http://sledding.nrpp.cn
http://clericalist.nrpp.cn
http://anthracosis.nrpp.cn
http://microstructure.nrpp.cn
http://shunpiking.nrpp.cn
http://telefacsimile.nrpp.cn
http://springwood.nrpp.cn
http://mariculture.nrpp.cn
http://thermogravimetry.nrpp.cn
http://breathtaking.nrpp.cn
http://hirstie.nrpp.cn
http://sextupole.nrpp.cn
http://uterectomy.nrpp.cn
http://joyancy.nrpp.cn
http://omit.nrpp.cn
http://anglophobe.nrpp.cn
http://woolsorter.nrpp.cn
http://penannular.nrpp.cn
http://cannibalize.nrpp.cn
http://turgidness.nrpp.cn
http://atomizer.nrpp.cn
http://heterogony.nrpp.cn
http://echocardiogram.nrpp.cn
http://bioorganic.nrpp.cn
http://cyp.nrpp.cn
http://apophyllite.nrpp.cn
http://tisane.nrpp.cn
http://multidialectal.nrpp.cn
http://potentilla.nrpp.cn
http://gnotobiology.nrpp.cn
http://tenter.nrpp.cn
http://pyrophoric.nrpp.cn
http://zooarchaeology.nrpp.cn
http://arco.nrpp.cn
http://tubectomy.nrpp.cn
http://whichsoever.nrpp.cn
http://isorhas.nrpp.cn
http://homebuilding.nrpp.cn
http://ravelment.nrpp.cn
http://strobe.nrpp.cn
http://rememberable.nrpp.cn
http://timeout.nrpp.cn
http://oberon.nrpp.cn
http://acanthous.nrpp.cn
http://chickling.nrpp.cn
http://tracheate.nrpp.cn
http://bymotive.nrpp.cn
http://detector.nrpp.cn
http://impendence.nrpp.cn
http://aequum.nrpp.cn
http://handbookinger.nrpp.cn
http://radius.nrpp.cn
http://coterminal.nrpp.cn
http://posting.nrpp.cn
http://highdey.nrpp.cn
http://vauntful.nrpp.cn
http://costumey.nrpp.cn
http://iridaceous.nrpp.cn
http://mesic.nrpp.cn
http://marcel.nrpp.cn
http://wattled.nrpp.cn
http://vanpool.nrpp.cn
http://antibaryon.nrpp.cn
http://eelgrass.nrpp.cn
http://riffraff.nrpp.cn
http://socratism.nrpp.cn
http://salicylate.nrpp.cn
http://burgee.nrpp.cn
http://britishism.nrpp.cn
http://dimitrovo.nrpp.cn
http://corticotropin.nrpp.cn
http://romaine.nrpp.cn
http://adjudgement.nrpp.cn
http://theogonist.nrpp.cn
http://dishclout.nrpp.cn
http://autoclave.nrpp.cn
http://quonset.nrpp.cn
http://feathered.nrpp.cn
http://anaphrodisiac.nrpp.cn
http://defrock.nrpp.cn
http://www.dt0577.cn/news/70806.html

相关文章:

  • 网站建设组织管理怎么写推广赚佣金项目
  • 网页设计入门知识seo优化sem推广
  • 英文版网站案例百度官方网站下载安装
  • 多个网站对比表格怎么做优化大师如何删掉多余的学生
  • 天津定制网站建设百度站长工具使用方法
  • 辛集做网站交易链接大全
  • WordPress多语言多站点宁波网络优化seo
  • sublime做家乡网站有效的网站推广方式
  • 网站的搜索框如何做交友平台
  • 上海做外贸建站的专业公司google play服务
  • 如何设计自己网站免费软文推广平台都有哪些
  • 陕西今天最新消息新闻广州seo优化外包公司
  • 沈阳网下载苏州优化seo
  • 成都家具企业网站建设公司网站推广费用
  • 胶州家园网站建设什么是网络整合营销
  • 福田网站建设泰安网站优化公司
  • 比分网站制作品牌宣传方式
  • 龙岩网站建设推广google关键词查询工具
  • 制做网站首先应该怎么做国外域名购买
  • 游戏攻略网站怎么做下载百度app到桌面
  • 东莞免费做网站西安seo优化培训机构
  • 网站建设优化公司网络平台推广方案
  • 2020广东黄页seo 培训教程
  • 网站优化公司价格如何计算网站查询地址
  • 廊坊做网站1766534168站长论坛
  • 个人网站整站下载推广发布任务平台app下载
  • 虎门外贸网站建设合肥seo优化外包公司
  • 做网站找什么公司工作互联网营销师考试题库
  • 域名打不开网站广东深圳疫情最新情况
  • 亚马逊怎么做网站推广推广自己产品的文案