Twitch.tv已经部署了缩小的生产代码,如下所示:
var SomeFunctions = {
func: function(arg) {
/* ... */
return true;
},
/* ... */
};
/* ... */
function otherCode() {
/* ... */
var a = 3;
if (Object(SomeFunctions.func)(a)) {
// do something...
}
}
显然这是由缩放器/转换器插入的,但为什么呢?这个代码模式的好处是什么?
它当然不能保护您免受TypeErrors的攻击:
>> Object(undefined)(3)
TypeError: Object(...) is not a function
在单个JS文件中,此模式发生的次数超过1,800次。
为完整起见,这是(格式化)代码的屏幕截图: