我想要实现这样一个效果:
function f = function(){
console.log(1);
}
f.before(function(){
console.log(2);
})
f(); //我想要这里输出为:2 1
请问before函数要怎么实现?
我想要实现这样一个效果:
function f = function(){
console.log(1);
}
f.before(function(){
console.log(2);
})
f(); //我想要这里输出为:2 1
请问before函数要怎么实现?
function f() {
console.log(1);
}
f = (function(old) {
return function() {
console.log(2);
old();
}
})(f);
f();
Function.prototype.before = function(beforeFn) {
var self = this;
return function() {
beforeFn();
self.apply(this, arguments);
}
};
function f() {
console.log(1);
}
var ff = f.before(function() {
console.log(2);
});
ff(); // Output: 2 1
// 注意使用before的返回值,f没有变化
// 或者使用
f = f.before(...);
function f() {
console.log('f')
}
f.before = function () {
return () => {
console.log('before')
this()
}
}
const newF = f.before()
newF()
这样也可以吧
13 回答12.8k 阅读
8 回答2.6k 阅读
2 回答5.1k 阅读✓ 已解决
7 回答1.9k 阅读
3 回答2.2k 阅读✓ 已解决
5 回答872 阅读
3 回答1.1k 阅读✓ 已解决
在chrome的控制台测试可以达到你想要的效果,,
不过可能会有兼容性问题
更新
好像没什么意思,不过还是折腾了一下
这样的缺点是,具体调用时需要另一个实例方法来辅助
好处就是也可以直接调用
a()
,这样不会调用到before function