是否可以隐藏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”)?