是否可以隐藏javascript函数代码



假设我有一个正常的函数:

function coolsecretalgo() {
return 42;
}

我很难通过使用以下功能来隐藏它的代码:

function hide(fname) {
var fn=self[fname]
Object.defineProperty(fn,"toString",{"value": ()=>fname+"() { [native code] }"})
Object.defineProperty(fn.toString,"toString",{"value": ()=>"toString() { [native code] }"})
Object.defineProperty(fn.toString.toString,"toString",{"value": fn.toString.toString})
}

有没有办法取消隐藏这样的隐藏功能?

hide("coolsecretalgo")
undefined
coolsecretalgo
ƒ coolsecretalgo() { [native code] }
coolsecretalgo.toString
ƒ toString() { [native code] }
coolsecretalgo.toString.toString
ƒ toString() { [native code] }
coolsecretalgo.toString.toString.toString
ƒ toString() { [native code] }

有更好的方法吗?

我的意思是:有可能写一个像这样的函数吗

function unhide(funcname) {
...some code..
}

然后

unhide("coolsecretalgo")

并取回原始代码?

如果您可以连接字符串并通过eval()运行它,那么就可以了。这不是保险箱的选择,但我不推荐它。