1

できれば二つお願いがあります。

  1. 最も重要ではありませんが、以下の私のコードに関してご意見をお待ちしております. 改善する方法はいくらでもあります。移植性や堅牢性を高めますか?

  2. 「新規」を作成すると、コードが完全に機能しないようです。私の推測では、実際には有効なオブジェクトを作成していません。私は何を間違っていますか。

これは、新しいオブジェクトを作成しようとしても機能しませんでした。

var ll_port2 = New ll_port;
    ll_port2.init({'aa':'#_div1','bb':'#_div2','cc':'1000'}); <-- no work

新しいアイテムを作成しなくても、うまくいきます。

ll_port.init({'aa':'#_div1','bb':'#_div2','cc':'1000'});  <-- works

以下のコード:

           var ll_port = {
                   items:{
                       outside: /billabong|newage/,
                    },
                   assign: function(){
                       ccont = this.items.aa;
                       if (typeof $(ccont) === 'object' && $(ccont).css('z-index') && $(ccont).css('z-index') != this.items.cc) {
                              $(ccont).css('zIndex','').css('zIndex', this.items.zi);
                       }
                   },
                   closeit:function(){
                       if($(this.items.bb).length && $(this.items.bb).is(':visible')){
                           $(this.items.bb).hide();
                       }
                   },
                   strL: function(){
                       var _self = this;
                         $("body :not(" + _self.items.aa + ")")
                             .mousedown(function(event){
                                  event.stopPropagation();
                                  _self.closeit();
                                  _self.assign();
                              });
                        $('iframe').live('mouseover', 
                            function () {
                                if(_self.items.outside.test($(this).attr('src'))){
                                  _self.closeit();
                                }
                            });​
                  },
                  init: function(data){
                      $.extend(this.items, data);
                      this.strL();
                      var _self = this;
                      setTimeout(function(){
                          _self.assign();
                      }, 1500);
                  }
           }; 
            ll_port.init({'aa':'#_div1','bb':'#_div2','cc':'1000'});
4

2 に答える 2

2

ll_portオブジェクトではなく、関数を作成する必要があります。

var ll_port = function(){
    //... all your stuff
    this.items = {outside: /billabong|newage/};
}

次に、使用できますvar ll_port2 = new ll_port()

JS を使用したオブジェクト指向プログラミングの詳細については、こちらを参照してください。

于 2012-06-12T18:20:32.890 に答える
2

New(タイプミスのほかに、これは である必要がありますnew) は、オブジェクトではなく s でのみ使用する必要がありfunctionます。

そして、それらの関数はコンストラクターでなければなりません。

new 演算子は、ユーザー定義のオブジェクト型、またはコンストラクター関数を持つ組み込みオブジェクト型のいずれかのインスタンスを作成します。

MDN

于 2012-06-12T18:17:18.803 に答える