滁州网站定制,wordpress页眉描述,济南新站seo外包,网站调用谷歌地图文章目录 definePropety语法参数用法 proxy语法参数用法 更多内容可参考我的博客 definePropety
ES5 提供了 Object.defineProperty 方法#xff0c;该方法可以在一个对象上定义一个新属性#xff0c;或者修改一个对象的现有属性#xff0c;并返回这个对象。
语法
Obj… 文章目录 definePropety语法参数用法 proxy语法参数用法 更多内容可参考我的博客 definePropety
ES5 提供了 Object.defineProperty 方法该方法可以在一个对象上定义一个新属性或者修改一个对象的现有属性并返回这个对象。
语法
Object.defineProperty(obj, prop, descriptor)参数
obj: 要在其上定义属性的对象。prop: 要定义或修改的属性的名称。descriptor: 将被定义或修改的属性的描述符。
第三个参数 descriptor 所表示的属性描述符有两种形式数据描述符和存取描述符。
用法
var obj {},value 9;
Object.defineProperty(obj, age, {get: function () {console.log(get);return value;},set: function (val) {console.log(set);value val;}
});
console.log(obj.age); // get 9
obj.age 18; // set
console.log(obj.age); // get 18proxy
使用 defineProperty 只能重定义属性的读取get和设置set行为到了 ES6提供了 Proxy可以重定义更多的行为比如 in、delete、函数调用等更多行为。
语法
var proxy new Proxy(target, handler);参数
proxy 对象的所有用法都是上面这种形式不同的只是handler参数的写法。其中new Proxy()表示生成一个Proxy实例target参数表示所要拦截的目标对象handler参数也是一个对象用来定制拦截行为。
用法
var proxy new Proxy({},{get: function (obj, prop) {console.log(设置 get 操作);return obj[prop];},set: function (obj, prop, value) {console.log(设置 set 操作);obj[prop] value;}}
);proxy.time 35; // 设置 set 操作console.log(proxy.time); // 设置 get 操作 // 35除了 get 和 set 之外proxy 可以拦截多达 13 种操作比如 has(target, propKey)可以拦截 propKey in proxy 的操作返回一个布尔值。
// 使用 has 方法隐藏某些属性不被 in 运算符发现
var handler {has(target, key) {if (key[0] _) {return false;}return key in target;}
};
var target { _prop: foo, prop: foo };
var proxy new Proxy(target, handler);
console.log(_prop in proxy); // false