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

响应式网站图解美食网站首页怎么做

响应式网站图解,美食网站首页怎么做,网站怎么更换域名,wordpress支持多域名目录 一、Object.defineProperty()作用基本语法示例:定义一个只读属性示例:定义 getter/setter 二、Proxy作用基本语法示例:拦截属性访问 对比:defineProperty vs Proxy场景选择建议 在 JavaScript 中,Object.definePr…

目录

  • 一、Object.defineProperty()
    • 作用
    • 基本语法
    • 示例:定义一个只读属性
    • 示例:定义 getter/setter
  • 二、`Proxy`
    • 作用
    • 基本语法
    • 示例:拦截属性访问
  • 对比:defineProperty vs Proxy
  • 场景选择建议

在 JavaScript 中,Object.defineProperty()Proxy 都可以用来拦截/控制对象的属性访问与修改,但它们适用的场景、能力和语法上有较大差异。

一、Object.defineProperty()

作用

给对象的某个属性定义更精细的特性,比如只读、不可枚举、拦截 getter/setter。

基本语法

Object.defineProperty(obj, 'key', {get() { return value; },set(newVal) { value = newVal; },enumerable: true,configurable: true
});

示例:定义一个只读属性

const user = {};
Object.defineProperty(user, 'name', {value: 'Tom',writable: false // 不可更改
});user.name = 'Jerry';
console.log(user.name); // Tom

示例:定义 getter/setter

const person = {};
let _age = 18;Object.defineProperty(person, 'age', {get() {console.log('get age');return _age;},set(val) {console.log('set age:', val);_age = val;}
});person.age = 20; // set age: 20
console.log(person.age); // get age → 20

二、Proxy

作用

创建一个对象的代理,可拦截几乎所有操作(读取、写入、删除、函数调用等)。

基本语法

const proxy = new Proxy(target, {get(target, prop) {return target[prop];},set(target, prop, value) {target[prop] = value;return true;}
});

示例:拦截属性访问

const user = { name: 'Tom' };const proxy = new Proxy(user, {get(target, prop) {console.log(`读取属性:${prop}`);return target[prop];},set(target, prop, value) {console.log(`设置属性:${prop} = ${value}`);target[prop] = value;return true;}
});proxy.name;          // 读取属性:name
proxy.age = 30;      // 设置属性:age = 30

更多关于 proxy 的内容可以阅读 Proxy 代理和 Reflect API

对比:defineProperty vs Proxy

特性Object.defineProperty()Proxy
支持属性拦截✅ 仅能拦截已知属性✅ 所有属性都能动态拦截
可拦截类型访问/设置访问、设置、删除、函数调用等(13种 trap)
是否修改原对象✅ 直接修改原对象❌ 返回一个新的代理对象
多层嵌套对象支持❌ 需手动为每一层递归处理✅ 可结合递归实现深层代理
Vue2 用于响应式defineProperty 实现响应式
Vue3 用于响应式✅ 使用 Proxy 实现响应式

场景选择建议

需求推荐方式
精准控制某个属性Object.defineProperty()
构建响应式对象(如 Vue3)Proxy
想对整个对象做统一拦截Proxy
兼容老浏览器Object.defineProperty()(IE9+)

如果你想自己实现一个响应式系统、双向绑定,或者拦截 API 调用,Proxy 更强大。如果只是限制某个属性或定义只读/计算属性,defineProperty 就足够。

http://www.dtcms.com/wzjs/817125.html

相关文章:

  • 加强企业网站建设163网易免费企业邮箱
  • 有哪些网站可以做全屏代码网站开发推荐英文字体
  • 太原提高网站排名优化营商环境个人心得
  • 淄博网站电子商城平台建设网站建立的重要性
  • wordpress views深圳做seo有哪些公司
  • 河南省住房建设厅官方网站linux怎么使用wordpress
  • 网站如何做品牌宣传没有服务器如何做网站
  • 网站如何改版浙江微信网站建设
  • 修改网站图片做网站维护价格
  • 做电商网站的公司梅州东莞网站建设
  • 揭阳 网站建设做茶道网站
  • 西安做商铺的网站免费网站商城模板
  • 河南网站备案代理成都网站优化方案
  • 上海设计网站wordpress monster
  • 清远市企业网站seo联系方式国外网站设计版式欣赏
  • 点网站建设wordpress替换谷歌字体库
  • 成品网站1688网页老河口城乡建设局网站
  • 成都著名网站建设公司做笑话网站需要什么
  • 教你如何建设网站打电话拉客户用网站做广告怎么做 好做吗
  • 企业内部网站打不开免费学做美食视频网站有哪些
  • 公司策划方案网站seo链接购买
  • 海口个人建站模板番禺网站 建设信科网络
  • 淘宝客网站建设多少钱弓长岭网站建设
  • 学生可做的网站主题企业管理培训课程方案
  • 青岛城市建设投资建设集团网站网站底版照片怎么做
  • xp系统中做网站服务器吗昆明做网站软件
  • 一键安装网站运行环境城乡建设厅建筑特种作业证书查询
  • 网站建设创客郑州微盟网站建设公司
  • 学校网站建设策划店铺设计叫什么
  • wordpress精致建站北京网站建设公司联系方式