这是我的插件代码:
( function() {
this.Modal = function( selector, options ) {
// Define option defaults
var defaults = {
open: false
}
this.options = extendDefaults( defaults, options );
alert();
}
function extendDefaults( source, properties ) {
var property;
for ( property in properties ) {
if ( properties.hasOwnProperty( property ) ) {
source[ property ] = properties[ property ];
}
}
return source;
}
}() );
只是我需要一种方法来防止再次调用 SAME 选择器的插件(如果它已经调用
(。更清楚的是,如果我尝试通过这样做初始化插件:
var firstSeelctor = new Modal( '.button' );
var secondSeelctor = new Modal( '.button' );
我需要调用第一个并忽略第二个,因为它已经在第一个调用了相同的选择器。
您需要将选择器存储在已创建的某个位置(例如直接在函数构造函数中(,然后在每次创建实例期间对其进行检查。
(function() {
this.Modal = function modal(selector, options) {
if (!modal.instances) {
modal.instances = {};
}
if (modal.instances[selector]) {
return modal.instances[selector];
}
modal.instances[selector] = this;
var defaults = {
open: false
};
this.options = extendDefaults(defaults, options);
console.log('created for selector: ' + selector);
// alert();
}
function extendDefaults(source, properties) {
var property;
for (property in properties) {
if (properties.hasOwnProperty(property)) {
source[property] = properties[property];
}
}
return source;
}
var firstSeelctor = new Modal('.button');
var secondSeelctor = new Modal('.button');
var thirdSeelctor = new Modal('.button-2');
console.log(firstSeelctor === secondSeelctor); // true, because it's the same instances
}());