是否可以隐藏javascript函数代码?

是否可以隐藏javascript函数代码?,javascript,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"

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

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})
}
我想用这个函数隐藏它的代码:

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()运行它,则可以完成此任务。但这不是保险柜选项,我不推荐使用。

代码作为代码发送到浏览器。你不能阻止它的检查。除了@pointy所说的:查看缩小JavaScript。它仍然像往常一样发送代码,但它会使代码变得模糊,使其难以阅读。可以通过查看从服务器接收的实际脚本来“取消隐藏”。对此你无能为力。为了保护尖利和他人,你必须定性地定义“隐藏”对你意味着什么。
Function.prototype.toString.call(fn)
hmm。。不关键是是否可以编写一个函数“unhide”(“coolsecretago”)?