mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2025-05-24 18:32:22 +00:00
doc(proxy): 修改proxy链式使用的例子
This commit is contained in:
parent
8482c89f41
commit
4ba798a774
@ -249,49 +249,24 @@ arr[-1] // c
|
|||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
var pipe = (function () {
|
var pipe = (function () {
|
||||||
var pipe;
|
|
||||||
return function (value) {
|
return function (value) {
|
||||||
pipe = [];
|
var funcStack = [];
|
||||||
return new Proxy({}, {
|
var oproxy = new Proxy({} , {
|
||||||
get: function (pipeObject, fnName) {
|
get : function (pipeObject, fnName) {
|
||||||
if (fnName == "get") {
|
if (fnName === 'get') {
|
||||||
return pipe.reduce(function (val, fn) {
|
return funcStack.reduce(function (val, fn) {
|
||||||
return fn(val);
|
return fn(val);
|
||||||
}, value);
|
},value);
|
||||||
}
|
}
|
||||||
pipe.push(window[fnName]);
|
funcStack.push(window[fnName]);
|
||||||
return pipeObject;
|
return oproxy;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
return oproxy;
|
||||||
}
|
}
|
||||||
}());
|
}());
|
||||||
|
|
||||||
var double = n => n * 2;
|
|
||||||
var pow = n => n * n;
|
|
||||||
var reverseInt = n => n.toString().split('').reverse().join('') | 0;
|
|
||||||
|
|
||||||
pipe(3).double.pow.reverseInt.get
|
|
||||||
// 63
|
|
||||||
|
|
||||||
var pipe = (function () {
|
|
||||||
return function (value) {
|
|
||||||
var funcStack = []; // 认为和上面pipe同名不利于理解,换了一个名
|
|
||||||
var oproxy = new Proxy({} , { // 使用了一个oproxy 存储Proxy的指向
|
|
||||||
get : function (pipeObject , fnName) {
|
|
||||||
if (fnName === "get") {
|
|
||||||
return funcStack.reduce(function (val , fn) {
|
|
||||||
return fn(val);
|
|
||||||
},value);
|
|
||||||
}
|
|
||||||
funcStack.push(window[fnName]);
|
|
||||||
return oproxy;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return oproxy;
|
|
||||||
}
|
|
||||||
}());
|
|
||||||
|
|
||||||
var double = n => n * 2;
|
var double = n => n * 2;
|
||||||
var pow = n => n * n;
|
var pow = n => n * n;
|
||||||
var reverseInt = n => n.toString().split("").reverse().join("") | 0;
|
var reverseInt = n => n.toString().split("").reverse().join("") | 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user