Javascript jQuery.fn-为什么不';这不管用吗?

Javascript jQuery.fn-为什么不';这不管用吗?,javascript,jquery,Javascript,Jquery,这里有什么问题?(除了有冗余代码)$。getJSON按预期工作。但是,$.postJSON不起作用。我可以通过firebug检查$.fn,并确保列出了足够多的postJSON。然而,如果我尝试调用它,我会得到一个没有函数定义的错误 jQuery.fn.getJSON = function(path, opts){ this.extend(opts, { url: path, dataType: 'json', type: 'GET' }); var inva

这里有什么问题?(除了有冗余代码)<代码>$。getJSON按预期工作。但是,
$.postJSON
不起作用。我可以通过firebug检查
$.fn
,并确保列出了足够多的postJSON。然而,如果我尝试调用它,我会得到一个没有函数定义的错误

jQuery.fn.getJSON = function(path, opts){
  this.extend(opts, {
    url: path,
    dataType: 'json',
    type: 'GET'
  });

  var invalid = opts.error;
  opts.error = function(xhr, status){
    var data = $.httpData(xhr, 'json');
    if (invalid) 
      invalid(data);
  }

  this.ajax(opts);
};

jQuery.fn.postJSON = function(path, data, opts) {
  this.extend(opts, {
    url: path,
    data: data,
    dataType: 'json',
    type: 'POST'
  });

  var invalid = opts.error;
  opts.error = function(xhr, status){
    var data = $.httpData(xhr, 'json');
    if (invalid) 
      invalid(data);
  }

  this.ajax(opts);
};

jQuery.fn是对jQuery对象原型的引用,所有jQuery构造的对象都可以访问该原型,因此该函数成为jQuery.prototype.postJSON。如果要将其声明为静态方法,则不应指定“.fn”


jQuery.getJSON之所以是“函数”,是因为它是jQuery对象的本机方法(不是您要声明的东西,即jQuery.prototype.getJSON)

jQuery.fn是对jQuery对象原型的引用,所有jQuery构造的对象都可以访问该原型,因此函数变成jQuery.prototype.postJSON。如果要将其声明为静态方法,则不应指定“.fn”

jQuery.getJSON之所以是“函数”,是因为它是jQuery对象的本机方法(不是您要声明的东西,即jQuery.prototype.getJSON)

jQuery.fn.postJSON = function(){};

alert(typeof jQuery.prototype.postJSON ); // function
alert(typeof jQuery.postJSON); // undefined