File tree 1 file changed +25
-0
lines changed
1 file changed +25
-0
lines changed Original file line number Diff line number Diff line change @@ -272,6 +272,31 @@ var reverseInt = n => n.toString().split('').reverse().join('') | 0;
272
272
273
273
pipe (3 ).double .pow .reverseInt .get
274
274
// 63
275
+
276
+ var pipe = (function () {
277
+ return function (value ) {
278
+ var funcStack = []; // 认为和上面pipe同名不利于理解,换了一个名
279
+ var oproxy = new Proxy ({} , { // 使用了一个oproxy 存储Proxy的指向
280
+ get : function (pipeObject , fnName ) {
281
+ if (fnName === " get" ) {
282
+ return funcStack .reduce (function (val , fn ) {
283
+ return fn (val);
284
+ },value);
285
+ }
286
+ funcStack .push (window [fnName]);
287
+ return oproxy;
288
+ }
289
+ });
290
+
291
+ return oproxy;
292
+ }
293
+ }());
294
+
295
+ var double = n => n * 2 ;
296
+ var pow = n => n * n;
297
+ var reverseInt = n => n .toString ().split (" " ).reverse ().join (" " ) | 0 ;
298
+
299
+ pipe (3 ).double .pow .reverseInt .get ; // 63
275
300
```
276
301
277
302
上面代码设置Proxy以后,达到了将函数名链式使用的效果。
You can’t perform that action at this time.
0 commit comments