我对我找到的jQuery插件的结构有疑问。
为了更好地理解,这里是插件结构的简化示例:
// Regular constructor function
function MyPlugin() {
this.myValue = "My Value";
}
// Methods on the prototype
MyPlugin.prototype.showValue = function() {
alert($.myplug.getValue());
}
MyPlugin.prototype.getValue = function() {
return this.myValue;
}
// jQuery plugin
$.fn.myplug = function() {
// Why is is possible to access $.myplug here although it's not created yet?
return this.each(function() {
$(this).html($.myplug.getValue());
});
};
// Create new MyPlug instance
$.myplug = new MyPlugin();
// Calling the jQuery plugin on a DOM element
$('div').myplug();
在大多数情况下,我得到了正在发生的事情。实际的插件逻辑似乎是作为普通的JavaScript"类"写成的 接下来是一个jQuery插件定义 - 我认为,实际上,一些新方法被添加到jQuery的原型中。这就是让我变得棘手的地方:
虽然在插件定义之后实例化了类,但是如何才能访问插件中的类实例?是否存在类似于可变吊装的机制?
如果您想尝试某些内容,请参阅示例的小提琴:http://jsfiddle.net/kq8ykkga/
答案 0 :(得分:0)
$(this).html($.myplug.getValue());
执行函数体之前, $('selector').myplug()
不会评估。