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

New(除了错字,应该是new)应该只用在functions 而不是对象上。

这些函数应该是构造函数。

new 运算符创建用户定义对象类型或具有构造函数的内置对象类型之一的实例。

MDN

于 2012-06-12T18:17:18.803 回答
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 回答