函數的方法
最大優點就是解耦了請求發送者和 N 個接收者之間的複雜關係
思路 :
1.驗證是否爲Judy ,不是 報錯
2.如果是打印出judy,並做相應的操作
/**
* @description test {Function} 驗證名字是不是“judy”
* @param {String} name 名字
* @param {Function} callback 返回執行函數
*/
function test(name,callback){
if(name !== 'judy'){
throw '不是judy' ;
}
return callback(name) ;
}
/**
* handle {Function} 執行操作
* @return {String} name 名字
*/
function handle(name){
return name
}
// let a = test('wayne',handle);
let b = test('judy',handle);
// console.log(a)
console.log(b)
方法二 :使用AOP實現職責鏈方法
// 1.驗證是否爲Judy ,不是 報錯
// 2.如果是打印出judy,並做相應的操作
var test = function (name) {
if (name !== 'judy') {
throw '不是judy';
}
return 'nextSuccessor';
}
var handle = function (name) {
if (name == 'judy') {
console.log('你好啊,judy')
}
}
Function.prototype.afterName = function (fn) {
var self = this;
return function () {
var ret = self.apply(this, arguments); //執行
if (ret === 'nextSuccessor') {
return fn.apply(this, arguments);
}
return ret;
}
}
var a = test.afterName(handle);
var b = test.afterName(handle);
a('judy');
b('wayne');