mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2025-05-28 04:42:21 +00:00
docs(proxy): enumerate方法
This commit is contained in:
parent
c41e6261f4
commit
c48648a178
@ -127,7 +127,7 @@ fproxy.foo; // 'Hello, foo'
|
|||||||
|
|
||||||
**(3)has(target, propKey)**
|
**(3)has(target, propKey)**
|
||||||
|
|
||||||
拦截`propKey in proxy`的操作,返回一个布尔值。
|
拦截`propKey in proxy`的操作,以及对象的`hasOwnProperty`方法,返回一个布尔值。
|
||||||
|
|
||||||
**(4)deleteProperty(target, propKey)**
|
**(4)deleteProperty(target, propKey)**
|
||||||
|
|
||||||
@ -135,7 +135,7 @@ fproxy.foo; // 'Hello, foo'
|
|||||||
|
|
||||||
**(5)enumerate(target)**
|
**(5)enumerate(target)**
|
||||||
|
|
||||||
拦截`for (var x in proxy)`,返回一个遍历器。
|
拦截`for...in`循环、`Object.getOwnPropertySymbols`方法、`Object.keys`方法和`JSON.stringify`方法,返回一个遍历器。
|
||||||
|
|
||||||
**(6)ownKeys(target)**
|
**(6)ownKeys(target)**
|
||||||
|
|
||||||
@ -550,12 +550,13 @@ proxy.foo = 'bar'
|
|||||||
|
|
||||||
### enumerate()
|
### enumerate()
|
||||||
|
|
||||||
`enumerate`方法用来拦截`for...in`循环。注意与Proxy对象的`has`方法区分,后者用来拦截`in`操作符,对`for...in`循环无效。
|
`enumerate`方法用来拦截遍历对象属性的行为,任何调用对象的Iterator接口的操作都会被拦截,最典型的就是`for...in`循环,以及`Object.getOwnPropertySymbols`方法、`Object.keys`方法和`JSON.stringify`方法等。
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
var handler = {
|
var handler = {
|
||||||
enumerate (target) {
|
enumerate (target) {
|
||||||
return Object.keys(target).filter(key => key[0] !== '_')[Symbol.iterator]();
|
let keys = Object.keys(target).filter(key => key[0] !== '_');
|
||||||
|
return keys[Symbol.iterator]();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
var target = { prop: 'foo', _bar: 'baz', _prop: 'foo' };
|
var target = { prop: 'foo', _bar: 'baz', _prop: 'foo' };
|
||||||
@ -573,8 +574,8 @@ for (let key in proxy) {
|
|||||||
```javascript
|
```javascript
|
||||||
var p = new Proxy({}, {
|
var p = new Proxy({}, {
|
||||||
enumerate(target) {
|
enumerate(target) {
|
||||||
console.log("called");
|
console.log('called');
|
||||||
return ["a", "b", "c"][Symbol.iterator]();
|
return ['a', 'b', 'c'][Symbol.iterator]();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
18695
npm-debug.log
Normal file
18695
npm-debug.log
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user