我是面向对象的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();
可能是他们使用了另一种我不了解的格式。如果,我想从该类之外调用该类的函数,我该怎么做?如果我的问题解释不好,请问我。
答案 0 :(得分:0)
通常,.extend({...})
表示"采取原型并合并提供的对象"。因此extend
会创建一个新对象,并设置为AjaxSolr.GenericGraphWidget
。这样,您可以执行类似于其他OOP语言中常见的继承。
我猜你删除了一些部分,所以我希望以下内容适用于你的具体例子:(function ($) { ... })(jQuery);
是一种编写一个立即调用的函数表达式的方法:它创建一个匿名函数(function ($) { ... have $ available here ... }
并使用一些参数(在本例中为jQuery
)直接调用它。