mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2025-05-24 10:22:23 +00:00
docs(proxy): edit proxyw
This commit is contained in:
parent
2d86fc3f9c
commit
7c7f1ce7d1
@ -1233,7 +1233,7 @@ var clock = function* () {
|
||||
|
||||
Generator 函数是 ES6 对协程的实现,但属于不完全实现。Generator 函数被称为“半协程”(semi-coroutine),意思是只有 Generator 函数的调用者,才能将程序的执行权还给 Generator 函数。如果是完全执行的协程,任何函数都可以让暂停的协程继续执行。
|
||||
|
||||
如果将 Generator 函数当作协程,完全可以将多个需要互相协作的任务写成 Generator 函数,它们之间使用`yield`表示式交换控制权。
|
||||
如果将 Generator 函数当作协程,完全可以将多个需要互相协作的任务写成 Generator 函数,它们之间使用`yield`表达式交换控制权。
|
||||
|
||||
### Generator 与上下文
|
||||
|
||||
|
@ -595,10 +595,9 @@ var handler = {
|
||||
|
||||
`construct`方法可以接受两个参数。
|
||||
|
||||
- `target`: 目标对象
|
||||
- `args`:构建函数的参数对象
|
||||
|
||||
下面是一个例子。
|
||||
- `target`:目标对象
|
||||
- `args`:构造函数的参数对象
|
||||
- `newTarget`:创造实例对象时,`new`命令作用的构造函数(下面例子的`p`)
|
||||
|
||||
```javascript
|
||||
var p = new Proxy(function () {}, {
|
||||
@ -664,11 +663,10 @@ var handler = {
|
||||
};
|
||||
var target = {};
|
||||
var proxy = new Proxy(target, handler);
|
||||
proxy.foo = 'bar'
|
||||
// TypeError: proxy defineProperty handler returned false for property '"foo"'
|
||||
proxy.foo = 'bar' // 不会生效
|
||||
```
|
||||
|
||||
上面代码中,`defineProperty`方法返回`false`,导致添加新属性会抛出错误。
|
||||
上面代码中,`defineProperty`方法返回`false`,导致添加新属性总是无效。
|
||||
|
||||
注意,如果目标对象不可扩展(extensible),则`defineProperty`不能增加目标对象上不存在的属性,否则会报错。另外,如果目标对象的某个属性不可写(writable)或不可配置(configurable),则`defineProperty`方法不得改变这两个设置。
|
||||
|
||||
|
@ -132,6 +132,20 @@ codePointLength(s) // 2
|
||||
|
||||
上面代码中,不加`u`修饰符,就无法识别非规范的`K`字符。
|
||||
|
||||
## RegExp.prototype.unicode 属性
|
||||
|
||||
正则实例对象新增`unicode`属性,表示是否设置了`u`修饰符。
|
||||
|
||||
```javascript
|
||||
const r1 = /hello/;
|
||||
const r2 = /hello/u;
|
||||
|
||||
r1.unicode // false
|
||||
r2.unicode // true
|
||||
```
|
||||
|
||||
上面代码中,正则表达式是否设置了`u`修饰符,可以从`unicode`属性看出来。
|
||||
|
||||
## y 修饰符
|
||||
|
||||
除了`u`修饰符,ES6 还为正则表达式添加了`y`修饰符,叫做“粘连”(sticky)修饰符。
|
||||
@ -264,16 +278,16 @@ tokenize(TOKEN_G, '3x + 4')
|
||||
|
||||
上面代码中,`g`修饰符会忽略非法字符,而`y`修饰符不会,这样就很容易发现错误。
|
||||
|
||||
## sticky 属性
|
||||
## RegExp.prototype.sticky 属性
|
||||
|
||||
与`y`修饰符相匹配,ES6 的正则对象多了`sticky`属性,表示是否设置了`y`修饰符。
|
||||
与`y`修饰符相匹配,ES6 的正则实例对象多了`sticky`属性,表示是否设置了`y`修饰符。
|
||||
|
||||
```javascript
|
||||
var r = /hello\d/y;
|
||||
r.sticky // true
|
||||
```
|
||||
|
||||
## flags 属性
|
||||
## RegExp.prototype.flags 属性
|
||||
|
||||
ES6 为正则表达式新增了`flags`属性,会返回正则表达式的修饰符。
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user