如何定义可以链接到其他Javascript库的Javascript函数?

时间:2013-09-28 23:19:07

标签: javascript jquery

如何定义一个可以链接到jQuery方法或其他库的方法'方法?

所以,让我说我有以下代码:

var Calculator = function(start) {
var that = this;

this.add = function(x) {
    start = start + x;
    return that;
};

this.multiply = function(x) {
    start = start * x;
    return that;
};

然后我可以将方法链接到我想要的一个Calculator对象:

new Calculator(0)
    .add(1)
    .multiply(2)

但是,如果我想链接名为" my_method"的方法,该怎么办?在像这样的jQuery对象之上:

$(document).append("<p></p>").my_function();
$(document).my_function();

我如何定义这样的功能? 我尝试将my_function添加到&#34;对象&#34; class,但是这不适用于对象数组:

Object.my_function = function() {
     alert(this); 
     return this;
};

1 个答案:

答案 0 :(得分:3)

jQuery允许您通过向jQuery.fn添加属性来扩展其对象。

所以:

$.fn.my_function = function() {
    …
};

您还可以使用jQuery.fn.extend扩展具有多个属性的jQuery对象原型。

至于其他图书馆 - 它有所不同!如果他们的对象有一个共同的构造函数,你通常可以把你的方法放在他们的原型上,这恰好是你的Object例子的问题;您需要将方法放在Object.prototype上,以使其成为查找链的一部分。

例如,您可以将自己的示例重写为(对于“常规”“类”实际上是首选):

function Calculator(start) {
    this.start = start;
}

Calculator.prototype.add = function(x) {
    this.start += x;
    return this;
};

Calculator.prototype.multiply = function(x) {
    this.start *= x;
    return this;
};