面向对象js的结构

时间:2016-03-07 18:00:13

标签: javascript jquery

我是面向对象的js的新手。在我的工作中,我必须编辑一些其他人完成的以前的代码。由于我是这个领域的新手,无法理解一些结构和符号。 Bellow我无法处理的结构,

(function ($) {
    AjaxSolr.GenericGraphWidget = AjaxSolr.AbstractFacetWidget.extend({

      _functionName:function(){
       }

   })(jQuery);

现在这里AjaxSolr是一个在另一个文件中定义的基类。 AbstractFacetWidget也是一个也从AjaxSolr扩展的类。现在任何人都可以解释一下,这是什么类型的结构?(是的,我只是理解这是一种类,就像其他oop语言一样,从另一个类扩展而来)。 (function ($)意味着什么?

我知道,直到创建对象和继承,我必须像下面这样做 -

var Constructor = function(name) {
    this.name = name
};

Constructor.prototype.mymethod = function() {
    alert("my name is : " + this.name);
};

var obj = new Constructor("foo");
obj.mymethod();

可能是他们使用了另一种我不了解的格式。如果,我想从该类之外调用该类的函数,我该怎么做?如果我的问题解释不好,请问我。

1 个答案:

答案 0 :(得分:0)

通常,.extend({...})表示"采取原型并合并提供的对象"。因此extend会创建一个新对象,并设置为AjaxSolr.GenericGraphWidget。这样,您可以执行类似于其他OOP语言中常见的继承。

我猜你删除了一些部分,所以我希望以下内容适用于你的具体例子:(function ($) { ... })(jQuery);是一种编写一个立即调用的函数表达式的方法:它创建一个匿名函数(function ($) { ... have $ available here ... }并使用一些参数(在本例中为jQuery)直接调用它。