File tree 3 files changed +23
-11
lines changed
3 files changed +23
-11
lines changed Original file line number Diff line number Diff line change @@ -1233,7 +1233,7 @@ var clock = function* () {
1233
1233
1234
1234
Generator 函数是 ES6 对协程的实现,但属于不完全实现。Generator 函数被称为“半协程”(semi-coroutine),意思是只有 Generator 函数的调用者,才能将程序的执行权还给 Generator 函数。如果是完全执行的协程,任何函数都可以让暂停的协程继续执行。
1235
1235
1236
- 如果将 Generator 函数当作协程,完全可以将多个需要互相协作的任务写成 Generator 函数,它们之间使用` yield ` 表示式交换控制权 。
1236
+ 如果将 Generator 函数当作协程,完全可以将多个需要互相协作的任务写成 Generator 函数,它们之间使用` yield ` 表达式交换控制权 。
1237
1237
1238
1238
### Generator 与上下文
1239
1239
Original file line number Diff line number Diff line change @@ -595,10 +595,9 @@ var handler = {
595
595
596
596
` construct ` 方法可以接受两个参数。
597
597
598
- - ` target ` : 目标对象
599
- - ` args ` :构建函数的参数对象
600
-
601
- 下面是一个例子。
598
+ - ` target ` :目标对象
599
+ - ` args ` :构造函数的参数对象
600
+ - ` newTarget ` :创造实例对象时,` new ` 命令作用的构造函数(下面例子的` p ` )
602
601
603
602
``` javascript
604
603
var p = new Proxy (function () {}, {
@@ -664,11 +663,10 @@ var handler = {
664
663
};
665
664
var target = {};
666
665
var proxy = new Proxy (target, handler);
667
- proxy .foo = ' bar'
668
- // TypeError: proxy defineProperty handler returned false for property '"foo"'
666
+ proxy .foo = ' bar' // 不会生效
669
667
```
670
668
671
- 上面代码中,` defineProperty ` 方法返回` false ` ,导致添加新属性会抛出错误 。
669
+ 上面代码中,` defineProperty ` 方法返回` false ` ,导致添加新属性总是无效 。
672
670
673
671
注意,如果目标对象不可扩展(extensible),则` defineProperty ` 不能增加目标对象上不存在的属性,否则会报错。另外,如果目标对象的某个属性不可写(writable)或不可配置(configurable),则` defineProperty ` 方法不得改变这两个设置。
674
672
Original file line number Diff line number Diff line change @@ -132,6 +132,20 @@ codePointLength(s) // 2
132
132
133
133
上面代码中,不加` u ` 修饰符,就无法识别非规范的` K ` 字符。
134
134
135
+ ## RegExp.prototype.unicode 属性
136
+
137
+ 正则实例对象新增` unicode ` 属性,表示是否设置了` u ` 修饰符。
138
+
139
+ ``` javascript
140
+ const r1 = / hello/ ;
141
+ const r2 = / hello/ u ;
142
+
143
+ r1 .unicode // false
144
+ r2 .unicode // true
145
+ ```
146
+
147
+ 上面代码中,正则表达式是否设置了` u ` 修饰符,可以从` unicode ` 属性看出来。
148
+
135
149
## y 修饰符
136
150
137
151
除了` u ` 修饰符,ES6 还为正则表达式添加了` y ` 修饰符,叫做“粘连”(sticky)修饰符。
@@ -264,16 +278,16 @@ tokenize(TOKEN_G, '3x + 4')
264
278
265
279
上面代码中,` g ` 修饰符会忽略非法字符,而` y ` 修饰符不会,这样就很容易发现错误。
266
280
267
- ## sticky 属性
281
+ ## RegExp.prototype. sticky 属性
268
282
269
- 与` y ` 修饰符相匹配,ES6 的正则对象多了 ` sticky ` 属性,表示是否设置了` y ` 修饰符。
283
+ 与` y ` 修饰符相匹配,ES6 的正则实例对象多了 ` sticky ` 属性,表示是否设置了` y ` 修饰符。
270
284
271
285
``` javascript
272
286
var r = / hello\d / y ;
273
287
r .sticky // true
274
288
```
275
289
276
- ## flags 属性
290
+ ## RegExp.prototype. flags 属性
277
291
278
292
ES6 为正则表达式新增了` flags ` 属性,会返回正则表达式的修饰符。
279
293
You can’t perform that action at this time.
0 commit comments