我在何时使用.prototype
扩展对象以及何时不使用它时感到非常困惑。就像下面的部分代码一样,为什么不在.prototype
中使用FacebookApi.defaults
,.prototype
仅用于函数吗?
+function ($) { "use strict";
var FacebookApi = function () {
return
}
FacebookApi.defaults = {
request_url: null
}
FacebookApi.prototype.request = function (options) {
$.ajax({
url: options
, cache: true
, method: 'GET'
, dataType: 'jsonp'
, success: function (data) {
FacebookApi.prototype.userinfo(data)
}
})
return
}
window.facebookapi = new FacebookApi();
$(document)
.on('load', facebookapi);
}(window.jQuery);
最佳答案
我不确定示例代码的来源,但是如果希望子类能够访问它,或者如果希望通过prototype
访问它,则通常要使用this
。
示例代码中的defaults
对应于Java中的static
变量-可以在类内或类外轻松引用它,但是您不能使用this.defaults
来获取它。而且,子类将无法覆盖,并且只能访问完全限定的名称(FacebookApi.defaults
)-尽管在您的示例中,您在函数内部声明了FacebookApi
,所以它仅在其中可见。
希望这有助于澄清一下!