4

如何定义可以链接到 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)

但是,如果我想在 jQuery 对象之上链接一个名为“my_method”的方法,如下所示:

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

我将如何定义这样的功能?我尝试添加my_function到“对象”类,但这不适用于对象数组:

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

1 回答 1

3

jQuery 允许您通过向jQuery.fn.

所以:

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

您还可以使用jQuery.fn.extend.

至于其他图书馆 - 它各不相同!如果他们的对象有一个共同的构造函数,你通常可以把你的方法放在他们的原型上,这就是你的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;
};
于 2013-09-28T23:20:50.010 回答