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