Javascript 如何使用YUI混淆全局变量,而不将整个类放入闭包中

Javascript 如何使用YUI混淆全局变量,而不将整个类放入闭包中,javascript,yui,minify,Javascript,Yui,Minify,假设有一个全局变量,它是一个函数 function MyClass(){} 这类方法包括 MyClass.func1 = function() { } 我希望确保YUI压缩和模糊处理能够正常工作,而不会将整个类放入一个类似于 (function () { function MyClass(){} MyClass.func1 = function() { } })(); 有没有一种方法可以使YUI压缩工作而不必执行此操作?好吧,我想您可以在压缩之前将其包装在匿

假设有一个全局变量,它是一个函数

function MyClass(){}
这类方法包括

MyClass.func1 = function()
{
}
我希望确保YUI压缩和模糊处理能够正常工作,而不会将整个类放入一个类似于

(function () {
    function MyClass(){}
    MyClass.func1 = function()
    {
    }
})();

有没有一种方法可以使YUI压缩工作而不必执行此操作?

好吧,我想您可以在压缩之前将其包装在匿名函数中,然后在压缩之后删除匿名函数

还要确保您使用的是prototype;)

结果:

(function(){function a(){}a.prototype.func1=function(){}})();
只需去掉匿名函数:

function a(){}a.prototype.func1=function(){}

恐怕YUI压缩忽略了全局变量,有什么特别的原因让类是全局的吗?Reference link@raunakathuria是的,一个原因是它是一个现有产品,另一个原因是保持类的全局性可以确保该类只能创建一个实例。保持类的全局性与可能产生的实例数无关……如果您需要的是单个实例,则应使用单实例模式。使您的类成为全局类并不会自动为您提供这些功能。@dandavis不,它不会。但是通过保持类的全局性,我的意思是对类的引用是全局的。意味着开发人员不必通过执行new className()来创建类的实例;我没有使用原型,在这个时间点上有太多的变化。有没有不使用原型的方法呢?原型对于创建对象的实例很有用。它仍然可以按您的方式使用,但MyClass的新实例将无法访问MyClass.func1。
function a(){}a.prototype.func1=function(){}