43页AOP

GeniusLc 评论 JavaScript设计模式与开发实践 3 2015-06-05 09:48:38
爱乐的陈
爱乐的陈 (昨日不可追,青春可追。) 2015-06-06 20:34:31

如果你有用 jQuery 的經驗的話,這就是個鏈式的使用啊,上一鏈的輸出等於下一鏈的輸入,而原函數只是第一鏈的返回的一部分,只調用了一次。

小马甲
小马甲 (我要实现经济自由~+~) 2015-09-29 12:58:02

我这边为啥输出的是 2 ,没有1 和 3 呢?

小马甲
小马甲 (我要实现经济自由~+~) 2015-09-29 13:00:56

我的代码是这样的呢:
Function.prototype.before = function(beforeFn) {
var _self = this;
return function() {
beforeFn.apply(this, arguments);
return _self.apply(this, arguments);
};
};
Function.prototype.after = function(afterFn) {
var _self = this;
return function() {
var ret = _self.apply(this, arguments);
afterFn.apply(this, arguments);
return ret;
};
};
var func = function() {
console.log(2);
}
func.before(function (){
console.log(1);
}).after(function(){
console.log(3);
});
func();

爱乐的陈
爱乐的陈 (昨日不可追,青春可追。) 2015-09-29 14:09:27

@北京+张小喵 func 函数本身并没有改变,你把最后两行代码改成这样:

var new_func = func.before(function (){
console.log(1);
}).after(function(){
console.log(3);
});
new_func();

你再体会下吧。

小马甲
小马甲 (我要实现经济自由~+~) 2015-09-30 17:25:36

多谢楼上,明白啦 (: