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

网站开发的技术支撑 经验能力权威seo技术

网站开发的技术支撑 经验能力,权威seo技术,上海专业网站建设哪家好,佛山专业做网站文章目录 一、数据劫持对象的访问器属性 二、Object.defineProperty()三、Proxy()四、补充1. Object类新增方法2. Array类新增方法 一、数据劫持 数据劫持:能够拦截到数据被使用或被修改的时机,在这个时机除了可以获取数据的值或对数据的值进行修改之外…

文章目录

  • 一、数据劫持
      • 对象的访问器属性
  • 二、Object.defineProperty()
  • 三、Proxy()
  • 四、补充
      • 1. Object类新增方法
      • 2. Array类新增方法

一、数据劫持

  • 数据劫持:能够拦截到数据被使用或被修改的时机,在这个时机除了可以获取数据的值或对数据的值进行修改之外,还可以执行其他功能。
    • 当对数据进行修改时,除了要修改数据自身之外,还希望对所有使用了该数据的位置进行同步修改。

对象的访问器属性

  • 访问器属性由 “getter” 和 “setter” 方法表示。在对象字面量中,它们用 get 和 set 表示:
let obj = {_msg: "hello world",get msg() {// 当读取 obj.msg 时,getter 起作用return this._msg;},set msg(value) {// 当执行 obj.msg = value 操作时,setter 起作用this._msg = value}
};
  • 当读取 obj.msg 时,getter 起作用,当 obj.msg 被赋值时,setter 起作用。
  • 从外表看,访问器属性看起来就像一个普通属性。这就是访问器属性的设计思想。我们不以函数的方式调用,我们正常读取它,getter 会在幕后运行。
  • 如果,访问器属性只有一个 getter。在赋值操作 obj.msg = xxx,将会出现错误:Error(属性只有一个 getter)
  • 这样就会有一个“虚拟”的属性,它是可读且可写的。我们会利用这种方式进行数据劫持。

二、Object.defineProperty()

  • Object.defineProperty(对象, 属性名, { 配置项 })
  • 配置项:
    • value:该属性对应的值
    • writable:该属性是否可被重写,默认是 false
    • enumerable:该属性是否可被枚举,默认是 false
    • get:是一个函数, 叫做 getter 获取器,可以来决定该属性的值
      • get 函数的返回值, 就是当前这个属性的值
      • 注意: 不能和 valuewritable 一起使用,会报错
    • set:是一个函数,叫做 setter 设置器,当你需要修改该属性的值的时候,会触发该函数
Object.defineProperty(obj, 'age', {// value: 18,// writable: true,enumerable: true,// 该函数的返回值就是 age 属性的值get () {return 20},set (val) {console.log('你想修改 age 的值, 你想修改为 : ', val)}
})
  • 升级版:Object.defineProperties(对象, { 配置项组 })
    • 配置项组,键为属性名,值为当前属性的配置项
Object.defineProperties(obj, {属性1: { 配置项 },属性2: { 配置项 }
})
  • 注意:Object.definePropertyObject.defineProperties无法劫持后来添加的属性

三、Proxy()

  • ES6新增的本地对象,语法为:new Proxy(原始对象, { 配置项 }),用于实现数据代理。
    • 返回值就是代理之后的对象
const obj = { name: 'Jack', age: 18 }
// 开始代理
const result = new Proxy(obj, {// 配置 get 进行代理设置get (target, property) {// target:要代理的目标对象,当前案例为 obj// property:该对象内的每一个属性,自动遍历return target[property];},// 配置 set 进行修改set (target, property, val) {// target:要代理的目标对象,当前案例为 obj// property:该对象内要修改的属性// val:要修改的属性的值target[property] = valconsole.log('你试图修改 ' + property + ' 属性, 你想修改为 : ', val, ' 我需要根据你修改的内容重新渲染页面')// 注意:简单代理需要返回:truereturn true;}
})

四、补充

1. Object类新增方法

  • Object.create(obj, { 配置项组 })
    • 创建(返回)一个新对象,这个新对象的__proto__指向obj
    • 配置项组,键为新对象的属性名,值为当前属性的配置项
      • 配置项,参考Object.defineProperty()的配置项
  • Object.is(value1, value2)
    • 判断两个value是否是相同的值,返回值为布尔值
  • Object.assign(obj1, obj2)
    • obj2合并到obj1,并返回合并之后的obj1
  • Object.keys(obj)
    • 返回对象所有可被枚举的key,以数组的形式呈现
  • Object.values(obj)
    • 返回对象所有可被枚举key的value,以数组的形式呈现
  • Object.setPrototypeOf(obj, prototype)
    • 修改obj__proto__指向指定的prototypeprototype对象null,返回值为修改后的obj
  • Object.getPrototypeOf(obj)
    • 获取并返回obj的原型对象

2. Array类新增方法

  • Array.from( 参数 )
    • 根据指定参数创建新数组,要求该参数可被迭代。
    • 可根据伪数组创建真数组,实现伪转真
    • 数组的深拷贝
  • Array.of( 数据, ... )
    • 根据指定数据创建数组,类似Array( 数据, ... ),但Array.of( 数据, ... )接收一个数值型数据时,不会作为长度
  • Array.isArray( 数据 )
    • 判断指定数据是否为数组,返回值为布尔值
http://www.bjxfkj.com.cn/article/106447.html

相关文章:

  • 怎么用PS做珠宝网站seo外包服务项目
  • 佛山市南海区建设局网站营销技巧第三季
  • 自己做的网站怎么挣钱2024年重大新闻简短
  • c 做网站简单吗sem培训班学费哪个好
  • 做视频资源网站有哪些内容seo网站内部优化方案
  • 做蛋糕的英文网站武汉做网页推广公司
  • 网站的维护aso优化什么意思
  • 多人在线网站开发域名怎么注册
  • 如何建个人网站视频深圳seo专家
  • 如何跟客户介绍网站建设和推广注册网站怎么注册
  • 深圳网站建设报价怎么样推广自己的网站
  • 武汉做网站公司方讯网络服务商
  • WordPress 微信分享缩略图潍坊网站seo
  • 正规淘宝放单平台seo网站关键词优化工具
  • asp网站源代码下载黄石seo
  • 做网站 超速云在线子域名二级域名查询工具
  • 北京做网站的大公司宁波seo排名公司
  • 网站设计过程单页关键词优化费用
  • 中小型网站建设方案b站视频推广网站2023
  • 网站建设服务天软科技sem和seo是什么
  • thinkcmf 做企业网站优化设计六年级上册数学答案
  • 南昌做网站开发的公司绍兴seo排名
  • 品牌网站建设市场分析驻马店网站seo
  • wordpress主题 仿36氪seo优化网络公司
  • 沈阳网站制作公司网络服务是什么
  • 网站建设是网络工程师吗外链发布
  • 做盗版网站百度竞价怎么做开户需要多少钱
  • 网站后台管理器怎么做互联网公司
  • 群晖 搭建两个wordpress网站优化平台
  • 做网站这么做申请网址怎么申请的