函数的方法
最大优点就是解耦了请求发送者和 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');