Jquery类/对象创建和一个小问题。好奇为什么“新”不起作用

时间:2012-06-12 18:14:49

标签: javascript jquery

如果可以,我有两个请求。

  1. 最不重要,但我会非常喜欢您对我的代码的看法。任何方式来改善它。使它更便携/更健壮等?

  2. 似乎在创建“新”时代码不能完全正常工作。我的猜测是我并没有真正创建一个有效的对象。我做错了什么。

  3. 这在尝试创建新对象时无效。

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

    如果我从未制作新项目,那就有效,ala:

    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'});
    

2 个答案:

答案 0 :(得分:2)

New(旁边的拼写错误,应该是new)应仅用于function s而不是对象。

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

  

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

MDN

答案 1 :(得分:2)

你需要使ll_port成为一个函数,而不是一个对象。

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

然后您可以使用var ll_port2 = new ll_port()

有关Object Oriented Programming with JS

的更多信息,请参阅此处