0

このリンクに続いて、オブジェクトの名前空間を次のように作成しました。

var Namespace =
{
  Register : function(_Name)
  {
    var chk = false;
    var cob = "";
    var spc = _Name.split(".");
    for(var i = 0; i<spc.length; i++)
    {
      if(cob!=""){cob+=".";}
      cob+=spc[i];
      chk = this.Exists(cob);
      if(!chk){this.Create(cob);}
    }
    if(chk){ throw "Namespace: " + _Name + " is already defined."; }
  },

  Create : function(_Src)
  {
    eval("window." + _Src + " = new Object();");
  },

  Exists : function(_Src)
  {
    eval("var NE = false; try{if(" + _Src + "){NE = true;}else{NE = false;}}catch(err){NE=false;}");
    return NE;
  }
}

オブジェクトを定義します。

Namespace.Register("System.Classes.HelloWorld"); 

System.Classes.HelloWorld = function(aa){ return {

    Message : "Hello World!",

    Hello : function(a,b)
    {
        alert(this.Message + a + b);
    }

};}

このオブジェクトに jQuery NoConflict を渡し、$ 記号を使用できるようにするにはどうすればよいですか?

たとえば、この記事では同様のオブジェクトを作成しますが、上記のコードに適用できない方法で jQuery NoConflict のみを渡します。

このコードは jQuery NoConflict をラップし、複製したいドル記号を許可します。

(function( skillet, $, undefined ) {
    //Private Property
    var isHot = true;

    //Public Property
    skillet.ingredient = "Bacon Strips";

    //Public Method
    skillet.fry = function() {
        var oliveOil;

        addItem( "\t\n Butter \n\t" );
        addItem( oliveOil );
        console.log( "Frying " + skillet.ingredient );
    };

    //Private Method
    function addItem( item ) {
        if ( item !== undefined ) {
            console.log( "Adding " + $.trim(item) );
        }
    }    
}( window.skillet = window.skillet || {}, jQuery ));
4

1 に答える 1

0

このパターンを試してみてください:

var Namespace = (function($) {
    //Private members
    var register = function(_Name) {
        //...
    };
    var create = function(_Src) {
        //...
    };
    var exists = function(_Src) {
        //...
    };

    //Expose public members
    return {
        register : register,
        create : create,
        exists : exists
    };
})(jQuery);

Namespace.これにより、あらゆる種類のプライベート メンバーを定義できるようになるだけでなく、内部関数呼び出しの前にorを付ける必要がなくなりますthis.

于 2013-03-26T22:09:58.663 に答える