私は jquery プラグインの作成に比較的慣れていないため、次の単純化された jsFiddle の私のコードが期待どおりに解決されない理由を誰かが説明できることを望んでいました。API と多数のチュートリアル ブログ (ほとんどは同じ例を再ハッシュ化したもの) を読んでも、プロキシが「間違った」ではなく「正しい」と出力しない理由がわかりません。
http://jsfiddle.net/Sheepish666/hZUvx/
!function ($) {
"use strict";
var plugin = function (element, options){
this.init("plugin", element, options);
};
plugin.prototype = {
constructor: plugin,
string : "correct",
init : function(type, element, options){
this.type = type;
this.$element = $(element);
this.options = this.getOptions(options);
},
getOptions: function (options) {
options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data());
return options;
},
test : function(){
this.options.callbackFn("no proxy");
$.proxy(this.options.callbackFn("proxy"), this);
}
};
//
var instance = null;
$.fn.plugin = function( option, arg1, arg2, arg3, arg4 ){
if(instance === null){
var options = typeof option == 'object' && option;
instance = new plugin(options);
}
if (typeof option == 'string') instance[option](arg1, arg2, arg3, arg4);
return instance;
};
$.fn.plugin.Constructor = plugin;
$.fn.plugin.defaults = {
string : "wrong",
callbackFn : function(type){
$("body").html($("body").html() + type + " = "+ this.string + "<br>");
}
};
}(window.jQuery);
$.fn.plugin().test();
事前にどうもありがとうございました :)