【发布时间】:2023-03-13 01:41:01
【问题描述】:
我在一个需要跟踪的对象上有这个函数,以及调用的父调用者和传递给调用者的参数。
这很好,直到缩小:
var foo = {
FunctionToBeLogged: function GiveMeAName() {
console.log('> %s called from %s - args: %o',
arguments.callee.name,
arguments.callee.caller.name,
arguments.callee.caller.arguments);
}
}
var bar = {
A: function A(something) {
foo.FunctionToBeLogged('nothing', 12, true);
},
B: function B(whatever, doesntMatter) {
foo.FunctionToBeLogged('nothing', 12, true);
}
}
bar.A(1.2, 'Fred', { }); // > GiveMeAName called from A - args: [1.2, "Fred", Object]
bar.B('Barney', 42, false); // > GiveMeAName called from B - args: ["Barney", 42, false]
Minification 去掉了这些名称,我的输出变为:
bar.A(1.2, 'Fred', { }); // > called from - args: [1.2, "Fred", Object]
bar.B('Barney', 42, false); // > called from - args: ["Barney", 42, false]
我真的不想去创建函数声明和赋值,因为我有很多它们(我用 7,564 继承了这段代码......我可以轻松地运行一些正则表达式子来命名函数表达式。)
我可以做些什么来防止缩小器摆脱我的这些函数名称?
【问题讨论】:
-
运行未压缩的代码....?不要在生产机器上开发,也不要在开发机器上缩小。
-
哈哈哈.. 抱歉,我忘了说:我们可以将未缩小的脚本部署到开发和集成环境,但我们需要从内部 QA 环境和后续阶段开始部署所有缩小的 JS 脚本。我们需要一直跟踪这些调用直到 Staging。
-
你用什么来压缩代码?
标签: javascript minify anonymous-function function-expression