抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

今天下午闲来无聊,发现新大陆,赶紧记录下来

现在浏览器上运行带有装饰器的代码会报错,还不支持,那我手动写一个吧,比较简陋

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了,这也太强大了吧,这不直接修改代码,逆天了,肯定有什么好玩的骚操作等着我去发现,先记录下来。。。

评论