1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-24 18:32:22 +00:00

docs(proxy): edit proxy

This commit is contained in:
ruanyf 2016-12-26 06:11:16 +08:00
parent 04f582da78
commit c39d1e580d

View File

@ -137,7 +137,7 @@ fproxy.foo // "Hello, foo"
**3has(target, propKey)** **3has(target, propKey)**
拦截`propKey in proxy`的操作,以及对象的`hasOwnProperty`方法,返回一个布尔值。 拦截`propKey in proxy`的操作,返回一个布尔值。
**4deleteProperty(target, propKey)** **4deleteProperty(target, propKey)**
@ -778,7 +778,7 @@ for (let key of Object.keys(proxy)) {
// "baz" // "baz"
``` ```
注意,有三类属性会被`ownKeys`方法自动过滤,不会返回。 注意,使用`Object.keys`方法时,有三类属性会被`ownKeys`方法自动过滤,不会返回。
- 目标对象上不存在的属性 - 目标对象上不存在的属性
- 属性名为 Symbol 值 - 属性名为 Symbol 值
@ -813,7 +813,7 @@ Object.keys(proxy)
上面代码中,`ownKeys`方法之中,显式返回不存在的属性(`d`、Symbol 值(`Symbol.for('secret')`)、不可遍历的属性(`key`),结果都被自动过滤掉。 上面代码中,`ownKeys`方法之中,显式返回不存在的属性(`d`、Symbol 值(`Symbol.for('secret')`)、不可遍历的属性(`key`),结果都被自动过滤掉。
下面是拦截`Object.getOwnPropertyNames()`的例子 `ownKeys`方法还可以拦截`Object.getOwnPropertyNames()`
```javascript ```javascript
var p = new Proxy({}, { var p = new Proxy({}, {
@ -826,7 +826,7 @@ Object.getOwnPropertyNames(p)
// [ 'a', 'b', 'c' ] // [ 'a', 'b', 'c' ]
``` ```
注意,`ownKeys`方法返回的数组成员,只能是字符串或 Symbol 值。如果有其他类型的值,或者返回的根本不是数组,就会报错。 `ownKeys`方法返回的数组成员,只能是字符串或 Symbol 值。如果有其他类型的值,或者返回的根本不是数组,就会报错。
```javascript ```javascript
var obj = {}; var obj = {};
@ -1035,9 +1035,7 @@ const proxy = new Proxy(target, handler);
proxy.getDate() // 1 proxy.getDate() // 1
``` ```
## 应用实例 ## 实例Web 服务的客户端
### Web 服务器的客户端
Proxy 对象可以拦截目标对象的任意属性,这使得它很合适用来写 Web 服务的客户端。 Proxy 对象可以拦截目标对象的任意属性,这使得它很合适用来写 Web 服务的客户端。