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

毕业设计 建设旅游网站wordpress 主题管理

毕业设计 建设旅游网站,wordpress 主题管理,网站开发的热门博客,唐山模板建站定制网站一、Object.defineProperty 这里只是简单描述#xff0c;具体请看另一篇文章#xff1a;Object.defineProperty。 Object.defineProperty 是 JavaScript 中用于定义或修改对象属性的功能强大的方法。它可以精确地控制属性的行为#xff0c;如是否可枚举、可配置、可写等。…一、Object.defineProperty 这里只是简单描述具体请看另一篇文章Object.defineProperty。 Object.defineProperty 是 JavaScript 中用于定义或修改对象属性的功能强大的方法。它可以精确地控制属性的行为如是否可枚举、可配置、可写等。 基本用法 Object.defineProperty(obj, prop, descriptor)Object.defineProperty 方法接受三个参数 『目标对象』要在其上定义属性的对象。『属性名称』要定义或修改的属性名称。『描述符对象』属性描述符对象用于描述该属性的行为。 属性描述符对象可以包含以下键 value属性的值。默认为 undefined。 writable属性是否可写。默认为 false。 configurable属性是否可配置。默认为 false。 enumerable属性是否可枚举。默认为 false。 get属性的 getter 函数。如果没有 getter值为 undefined。 set属性的 setter 函数。如果没有 setter值为 undefined。 用例 1. 定义一个只读属性 let obj {};Object.defineProperty(obj, message, {value: Hello, world!,writable: false });console.log(obj.message); // 输出 Hello, world! obj.message Hi!; // 无效因为属性是只读的 console.log(obj.message); // 仍然输出 Hello, world!2. 定义一个不可枚举属性 let obj {};Object.defineProperty(obj, message, {value: Hello, world!,enumerable: false });console.log(obj.message); // 输出 Hello, world! console.log(Object.keys(obj)); // 输出 [], 因为属性不可枚举3. getter与setter let obj {}; let value Hello, world!;Object.defineProperty(obj, message, {get() {return value;},set(newValue) {value newValue;},enumerable: true,configurable: true });console.log(obj.message); // 输出 Hello, world! obj.message Hi!; console.log(obj.message); // 输出 Hi!4. 定义不可配置属性 let obj {};Object.defineProperty(obj, message, {value: Hello, world!,configurable: false });console.log(obj.message); // 输出 Hello, world!Object.defineProperty(obj, message, {value: Hi! }); // 抛出错误因为属性不可配置二、Proxy Proxy 是 ES6 引入的一项功能用于定义自定义行为来拦截并改变对某个对象的基本操作例如属性读取、赋值、枚举、函数调用等。 基本语法 let proxy new Proxy(target, handler);Proxy 构造函数接受两个参数 target要包装的目标对象可以是任何类型的对象包括数组、函数等。handler一个对象其中包含一组捕捉器traps。这些捕捉器定义了在执行各种操作时代理对象如何处理这些操作。 捕捉器Traps包含 get(target, prop, receiver)拦截对象属性的读取。 set(target, prop, value, receiver)拦截对象属性的设置。 has(target, prop)拦截 in 操作符。 deleteProperty(target, prop)拦截 delete 操作符。 ownKeys(target)拦截 Object.getOwnPropertyNames 和 Object.getOwnPropertySymbols 方法。 apply(target, thisArg, argumentsList)拦截函数调用。 construct(target, args)拦截 new 操作符。 用例 1. 基本使用 let target {message: Hello, world! };let handler {get(target, prop) {return prop in target ? target[prop] : Property ${prop} does not exist.;},set(target, prop, value) {console.log(Setting ${prop} to ${value});target[prop] value;return true;} };let proxy new Proxy(target, handler);console.log(proxy.message); // 输出 Hello, world! console.log(proxy.nonExistent); // 输出 Property nonExistent does not exist. proxy.message Hi!; // 输出 Setting message to Hi!2. 拦截函数调用 let target function() {return I am the target; };let handler {apply(target, thisArg, argumentsList) {return I am the proxy;} };let proxy new Proxy(target, handler);console.log(proxy()); // 输出 I am the proxy3. 拦截属性删除 let target {message: Hello, world! };let handler {deleteProperty(target, prop) {if (prop in target) {delete target[prop];console.log(Property ${prop} deleted);return true;} else {console.log(Property ${prop} does not exist);return false;}} };let proxy new Proxy(target, handler);delete proxy.message; // 输出 Property message deleted delete proxy.nonExistent; // 输出 Property nonExistent does not exist三、二者对比 代理的粒度不同 defineProperty 只能代理属性Proxy 代理的是对象。 defineProperty 如果想代理对象的所有属性需要遍历并为每个属性添加 setter 和 getter。 Proxy 只需要配置一个可以获取属性名参数的函数即可。 是否破坏原对象 defineProperty 的代理行为会破坏原对象它会将原本的 value 变成了 setter 和 getter。 Proxy 则不会破坏原对象只是在原对象上覆盖了一层。当新增属性时希望属性被代理defineProperty 需要显式调用该 API而 Proxy 则可以直接用 obj.key val的形式 Object.definePropertyProxy拦截范围只能拦截对象的单个属性操作即只能定义特定属性的getter和setter可以拦截对对象的所有操作包括属性访问、赋值、删除、函数调用等可以使用get、set、deleteProperty等捕捉器来拦截这些操作动态属性不可以处理动态属性可以处理对象的动态添加和删除属性是否破坏原对象是否性能性能逊于Proxy对于处理嵌套对象和大量属性的情况性能好兼容性兼容性更好由于ES6中才引入Proxy所以兼容性略差 四、与Vue2、Vue3的关系 vue2响应式数据原理是Object.defineProperty。 Vue3响应式数据原理是Proxy。
http://www.hkea.cn/news/14551548/

相关文章:

  • 医药网站建设的需求分析邯郸网络教研平台
  • 网站建设服务器的选择方式包括做网站一般都用什么字体
  • 营销网站建设平台网站建设维护 微信
  • 深圳做分销网站西安网站设计西安搜推宝
  • 公司做一个网站内容如何设计南通企业网站制作
  • 商务网站的可行性分析包括帝国网站管理系统教程
  • 中山品牌网站建设推广响应式网站 768 320
  • dw做网站的搜索栏怎么做嘉定网站建设
  • 电商网站前端页面内容编写采集做网站
  • 八亿免费建站淘宝网站怎么做视频
  • 百度怎么优化网站关键词一站式婚庆公司
  • php建设网站后台济南天桥区网站建设公司
  • 企业做网站公司五月色做受网站
  • 大淘客怎么做网站天元建设集团有限公司济南六公司
  • 产品介绍网站如何做seo广告制作公司的营业成本
  • 站长统计性宝app个人网站设计论文怎么写
  • 什么网站可以做高仿建设班级网站
  • 国内做设计的网站建设丽水微信网站建设价格
  • 网站开发工程师的生活形态小门店做网站
  • 怎么建立网站个人网站备案通过后
  • 中国建设银行门户网站做一个手机购物网站多少钱
  • 淮北市矿业工程建设公司网站wordpress2017
  • 快手点赞购买网站wordpress 发布文章 自定义栏目
  • 把公司网站 公开下载 做教程 侵权吗网站301重定向 权重转移
  • 移动端网站建设费用开源 购物网站
  • 深圳网站推广活动方案东莞做网站微信巴巴
  • 河北省衡水市景县规划网站wordpress用什么开发工具
  • 南山做棋牌网站建设制作小诗集
  • 一起做网站怎么下单手机网站设计公司立找亿企邦
  • 3小时百度收录新站方法合肥小程序建设