jQuery插件结构:在插件定义中访问JavaScript类?

时间:2015-10-23 21:35:16

标签: javascript jquery

我对我找到的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/

1 个答案:

答案 0 :(得分:0)

在您调用$(this).html($.myplug.getValue());执行函数体之前,

$('selector').myplug()不会评估