临沂做网站企业,文化建设方案,分类网站一天做几条合适,网站开发简称Object.defineProperty()
#xff08;1#xff09;这个方法是ES5新增的 #xff08;2#xff09;这个方法的作用是#xff1a;给对象新增属性#xff0c;或者设置对象原有的属性 #xff08;3#xff09;用法#xff1a;Object.defineProperty(给哪个对象新增属性,‘…Object.defineProperty()
1这个方法是ES5新增的 2这个方法的作用是给对象新增属性或者设置对象原有的属性 3用法Object.defineProperty(给哪个对象新增属性,‘新增的属性名是什么’,{给新增的属性设置相关的配置项key:value对}) 补充配置项有哪些 ①value配置项给属性指定值 ②writable配置项设置该属性的值是否可以修改。true表示可以修改false表示不能修改 ③getter方法 配置项不需要我们手动调用。当读取属性值的时候getter方法被自动调用。 a.getter方法的返回值非常重要这个返回值就代表这个属性它的值。 ④setter方法 配置项不需要我们手动调用。当修改属性值的时候setter方法被自动调用。 a.setter方法上有一个参数这个参数可以接收传过来的值 ⑤当配置项当中有setter和getter的时候value和writable配置项都不能写
bodyscript// 一个普通对象 let phone {}// 临时变量 let temp;// 给上面的phone对象新增一个color属性Object.defineProperty(phone, color, {// value: 太空侠,// writable: true,get: function () {console.log(getter方法执行了);return temp;},set: function (val) {console.log(setter方法执行了);temp val;}})/script
/body数据代理机制的实现
1什么是数据代理机制 通过访问代理对象的属性来间接访问目标对象的属性。数据代理机制的实现需要依靠Object.defineProperty()方法 2ES6新特性在对象中的函数/方法 :function是可以省略的
bodyscript// 目标对象 let target {name : zhangsan}// 代理对象 let proxy {}// 如果要实现数据代理机制的话就需要给proxy新增一个name属性// 注意代理对象新增的这个属性的名字 和 目标对象的属性名要一致Object.defineProperty(proxy, name, {get: function () {// 间接访问目标对象的属性return target.name;},set: function (val) {target.name val;}})/script
/body
3属性名有(…)的代表是代理对象