我意识到一个人是原型可以有人告诉我这两者之间的区别吗?
$.addMessage = function () {
和
$.fn.addMessage = function () {
从我可以看到,一个扩展JQuery和其他JQueryStatic在typescript
interface JQuery {
addMessage();
}
interface JQueryStatic {
addMessage();
}
答案 0 :(得分:4)
如果添加功能
$.addMessage = function(){
您可以稍后以
的身份访问该功能$.addMessage()
从语义上讲,该函数与特定的jQuery实例无关,可以被视为Java中
如果添加功能
$.fn.addMessage = function(){
由于jQuery将$ .fn定义为$ .prototype的别名,这相当于
$.prototype.addMessage = function(){
Javascript会自动将Class.prototype
指定为使用new Class()
创建的对象的原型。 $(...)
在内部使用new $(...)
,这意味着它会使用$
作为构造函数创建新对象。这意味着$.fn.addMessage
也可以作为
$(".messageContainer").addMessage()
从语义上讲,$.fn.addMessage
与特定的jQuery实例有关。这意味着this
函数中的addMessage
不是$.fn
,而是$(...)
。因此,$.fn
可以被视为Java中等同于实例方法(属于实例)。
换句话说,如果您将函数声明为
$.addMessage = function(){
,您将其用作
$.addMessage()
如果您将其声明为
$.fn.addMessage = function(){
,您将其用作
$(".messageContainer").addMessage()