如何定义一个可以链接到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;
};
答案 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;
};