你要關切的私人範圍/分離添加到 「插件」。這對於基於插件的Web應用程序的維護和長期可擴展性非常重要,無論所有內容是被內置到一個文件還是多個文件中。
可以創建私人範圍和由直接連接方法或通過向jQuery.fn.foo方法的原型擴展現有jQuery.fn方法
(function ($) {
// instance method attached to the constructor function
$.fn.myCMS.classOne = function() {
};
// or "shared" method attached to prototype
$.fn.myCMS.prototype.classOne = function() {
};
})(jQuery);
可以使用jQuery.extend(),在這種情況下,它實際上是一個「簡寫」,用於將方法添加到構造函數實例中作爲上面的第一種方法。你必須封裝要添加到任何對象(通常這將是一個匿名的對象):如果你有需要在同一合攏變量得到頻繁「類」
$.extend($.fn.myCMS,{ classOne: function() { } });
從設計的角度來看,他們應該可能是同一個函數作用域/閉包的一部分,或者你應該爲那些被關閉的變量公開getter和setter(或許使用_foo約定來表明它們只能被你的代碼使用)。
(function ($) {
var foo = "foo!";
// combined getter/setter
// could also check arguments.length
$.fn.myCMS._foo = function (value) {
if (typeof(value) != "undefined") {
foo = value;
} else {
return foo;
}
};
)(jQuery);
如果你想成爲一名黑客,你需要在合攏變量從不同範圍,以獲得,我相信你可以通過使用.CALL()或。適用執行與自己的範圍,這些新方法,這樣做()從另一個範圍。我可以嘗試掀起一些關於它如何工作的示例,但如果您自己研究範圍解析在這些情況下的工作方式,這將是一個好主意。
我相信你可以通過使用with($ .fn.myCMS){}構造從原始的「插件」方法中「借用」範圍,但我並不是100%肯定的,因爲我沒有做到這一點我自己,只有閱讀它。