今天下午闲来无聊,发现新大陆,赶紧记录下来
现在浏览器上运行带有装饰器的代码会报错,还不支持,那我手动写一个吧,比较简陋
function fnDecaorator(own: Function, fn: Function) {
return fn(own)
}
function say() {
console.log('I can say')
}
function other(fn: Function) {
return function () {
console.log("老子开始执行了")
fn()
console.log("老子运行完了")
}
}
fnDecaorator(say, other)()
装饰器返回一个函数,在第二个回调函数里可以操作第一个回调函数,怎么玩都行,不过我也就只能想到记个时啥的。。。
重要发现:
> say.toString()
< "function say(){\n console.log('I can say!')\n}"
> eval("function say(){\n console.log('I can eat!')\n}")
> say()
< I can eat!
JavaScript里直接把函数toString了,这也太强大了吧,这不直接修改代码,逆天了,肯定有什么好玩的骚操作等着我去发现,先记录下来。。。