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
|
||||
var pipe = (function () {
|
||||
var pipe;
|
||||
return function (value) {
|
||||
pipe = [];
|
||||
return new Proxy({}, {
|
||||
get: function (pipeObject, fnName) {
|
||||
if (fnName == "get") {
|
||||
return pipe.reduce(function (val, fn) {
|
||||
var funcStack = [];
|
||||
var oproxy = new Proxy({} , {
|
||||
get : function (pipeObject, fnName) {
|
||||
if (fnName === 'get') {
|
||||
return funcStack.reduce(function (val, fn) {
|
||||
return fn(val);
|
||||
}, value);
|
||||
},value);
|
||||
}
|
||||
pipe.push(window[fnName]);
|
||||
return pipeObject;
|
||||
funcStack.push(window[fnName]);
|
||||
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 pow = n => n * n;
|
||||
var reverseInt = n => n.toString().split("").reverse().join("") | 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user