mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2025-05-24 18:32:22 +00:00
docs(proxy): edit proxy.ownkeys
This commit is contained in:
parent
7fab96c932
commit
b48a35bebb
@ -129,7 +129,7 @@ fproxy.foo === "Hello, foo" // true
|
|||||||
- **set(target, propKey, value, receiver)**:拦截对象属性的设置,比如`proxy.foo = v`或`proxy['foo'] = v`,返回一个布尔值。
|
- **set(target, propKey, value, receiver)**:拦截对象属性的设置,比如`proxy.foo = v`或`proxy['foo'] = v`,返回一个布尔值。
|
||||||
- **has(target, propKey)**:拦截`propKey in proxy`的操作,返回一个布尔值。
|
- **has(target, propKey)**:拦截`propKey in proxy`的操作,返回一个布尔值。
|
||||||
- **deleteProperty(target, propKey)**:拦截`delete proxy[propKey]`的操作,返回一个布尔值。
|
- **deleteProperty(target, propKey)**:拦截`delete proxy[propKey]`的操作,返回一个布尔值。
|
||||||
- **ownKeys(target)**:拦截`Object.getOwnPropertyNames(proxy)`、`Object.getOwnPropertySymbols(proxy)`、`Object.keys(proxy)`,返回一个数组。该方法返回目标对象所有自身的属性的属性名,而`Object.keys()`的返回结果仅包括目标对象自身的可遍历属性。
|
- **ownKeys(target)**:拦截`Object.getOwnPropertyNames(proxy)`、`Object.getOwnPropertySymbols(proxy)`、`Object.keys(proxy)`、`for...in`循环,返回一个数组。该方法返回目标对象所有自身的属性的属性名,而`Object.keys()`的返回结果仅包括目标对象自身的可遍历属性。
|
||||||
- **getOwnPropertyDescriptor(target, propKey)**:拦截`Object.getOwnPropertyDescriptor(proxy, propKey)`,返回属性的描述对象。
|
- **getOwnPropertyDescriptor(target, propKey)**:拦截`Object.getOwnPropertyDescriptor(proxy, propKey)`,返回属性的描述对象。
|
||||||
- **defineProperty(target, propKey, propDesc)**:拦截`Object.defineProperty(proxy, propKey, propDesc)`、`Object.defineProperties(proxy, propDescs)`,返回一个布尔值。
|
- **defineProperty(target, propKey, propDesc)**:拦截`Object.defineProperty(proxy, propKey, propDesc)`、`Object.defineProperties(proxy, propDescs)`,返回一个布尔值。
|
||||||
- **preventExtensions(target)**:拦截`Object.preventExtensions(proxy)`,返回一个布尔值。
|
- **preventExtensions(target)**:拦截`Object.preventExtensions(proxy)`,返回一个布尔值。
|
||||||
@ -756,6 +756,7 @@ Object.isExtensible(p) // 报错
|
|||||||
- `Object.getOwnPropertyNames()`
|
- `Object.getOwnPropertyNames()`
|
||||||
- `Object.getOwnPropertySymbols()`
|
- `Object.getOwnPropertySymbols()`
|
||||||
- `Object.keys()`
|
- `Object.keys()`
|
||||||
|
- `for...in`循环
|
||||||
|
|
||||||
下面是拦截`Object.keys()`的例子。
|
下面是拦截`Object.keys()`的例子。
|
||||||
|
|
||||||
@ -850,6 +851,23 @@ Object.getOwnPropertyNames(p)
|
|||||||
// [ 'a', 'b', 'c' ]
|
// [ 'a', 'b', 'c' ]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
`for...in`循环也受到`ownKeys`方法的拦截。
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
const obj = { hello: 'world' };
|
||||||
|
const proxy = new Proxy(obj, {
|
||||||
|
ownKeys: function () {
|
||||||
|
return ['a', 'b'];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
for (let key in proxy) {
|
||||||
|
console.log(key); // 没有任何输出
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
上面代码中,`ownkeys`指定只返回`a`和`b`属性,由于`obj`没有这两个属性,因此`for...in`循环不会有任何输出。
|
||||||
|
|
||||||
`ownKeys`方法返回的数组成员,只能是字符串或 Symbol 值。如果有其他类型的值,或者返回的根本不是数组,就会报错。
|
`ownKeys`方法返回的数组成员,只能是字符串或 Symbol 值。如果有其他类型的值,或者返回的根本不是数组,就会报错。
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
|
Loading…
x
Reference in New Issue
Block a user