在添加新元素时,防止重复添加,可以在每次添加完成后,设置一个变量并置为true,在每次添加前判断此变量是否为true,若为true,则return退出。以Vue.use()方法为例:
首先判断传入的参数plugin的属性installed是否存在,如果plugin的属性installed存在或逻辑值为真,那么直接返回,后边的代码就不会再执行;如果plugin的属性installed不存在或逻辑值为假,那么继续往下执行。
Vue.use = function (plugin) {
/* 未添加/注册过则忽略 if */
if (plugin.installed) {
return
}
// additional parameters
var args = toArray(arguments, 1);
args.unshift(this);
if (typeof plugin.install === 'function') {
plugin.install.apply(plugin, args);
} else if (typeof plugin === 'function') {
plugin.apply(null, args);
}
/* 添加/注册后将变量置为true,当再次可能添加/注册时,进入上面if判断return退出添加/注册 */
plugin.installed = true;
return this
};