0

良い一日。私はかなり単純な問題に直面しています。コミュニティが私を助けてくれることを願っています。

これが私が持っているものです:私は2つのJavaScriptファイルを持っています.1番目に親クラスがあり、2番目に子クラスがあります. ここで、これらの定義をグローバル名前空間から隠したいと思います。もちろん、それらすべてを単一の JavaScript ファイルに入れ、このような自己呼び出し型の匿名関数にラップして、子オブジェクトのインスタンスが 1 つだけになるようにすることもできます (私が達成しようとしているもの):

var myChildObj = (function(){

    var ParentClass = function() {};    
    ParentClass.prototype = { 
        //some data
    };

    function extendsClass(childClass, parentClass, isRewrite) {
        for(var property in parentClass.prototype) {
            if (isRewrite || 
               (!isRewrite && 
                !isDefined(childClass.prototype[property]))) {                         
                childClass.prototype[property] = parentClass.prototype[property];
            }
        }

        childClass.prototype.parent =  parentClass.prototype;
    }

    var ChildClass = function() {}; 
    ChildClass.prototype = {
        //some data
    }

    extendsClass(ChildClass, ParentClass, false);
    return new PhotoGallerySingle();    
})();

しかし、ParentClass の宣言はかなり大きく、すべてをそこに入れるのはプログラマーにとってあまりフレンドリーではありません。

では、通常、そのような問題を解決するにはどうすればよいでしょうか。ありがとうございました。

4

2 に答える 2

1

唯一のオプションは、それをウィンドウオブジェクトに追加することです。つまり、同じ変数の下にネストすることができます。

var MYNAMESPACE = window.MYNAMESPACE = {}
MYNAMESPACE.code = "hello"

使用中の名前(ドキュメントなど)をヒットしないように注意してください

于 2012-10-15T18:17:01.710 に答える
1

恐れ入りますが、それはできません。

直接グローバル名前空間以外のオブジェクトにいつでもアタッチできますが、2番目のスクリプトで使用できるようにする場合は、どこかで公開する必要があります。最終的には、グローバルオブジェクトからアクセスできる必要があります。

ごめん。

于 2012-10-15T18:19:13.050 に答える