Skip to content

Commit 7f3f2ac

Browse files
committed
refactor: code
1 parent 8dc4ff3 commit 7f3f2ac

File tree

5 files changed

+31
-32
lines changed

5 files changed

+31
-32
lines changed

dist/vue-create-api.esm.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ function isFunction(fn) {
4545
return typeof fn === 'function';
4646
}
4747

48+
function isArray(arr) {
49+
return Object.prototype.toString.call(arr) === '[object Array]';
50+
}
51+
4852
function assert(condition, msg) {
4953
if (!condition) {
5054
throw new Error("[vue-create-api error]: " + msg);
@@ -329,39 +333,35 @@ var cache = {
329333
}
330334
},
331335
remove: function remove(component) {
332-
var idx = -1;
333336
var instances = cache.instances;
334337
var len = instances.length;
335338
for (var i = 0; i < len; i += 1) {
336339
var ins = instances[i];
337340
if (ins === component) {
338-
idx = i;
339-
break;
341+
instances.splice(i, 1);
342+
return;
340343
}
341344
}
342-
if (idx > -1) {
343-
instances.splice(idx, 1);
344-
}
345345
}
346346
};
347347

348348
function batchDestroy(filter) {
349-
var hasFilter = typeof filter === 'function';
349+
var hasFilter = isFunction(filter);
350350
var instancesCopy = cache.instances.slice();
351351
var instances = hasFilter ? filter(instancesCopy) : instancesCopy;
352-
if (!Array.isArray(instances)) {
352+
if (!isArray(instances)) {
353353
return;
354354
}
355355
if (hasFilter) {
356356
instances.forEach(function (ins) {
357-
if (ins && typeof ins.remove === 'function') {
357+
if (ins && isFunction(ins.remove)) {
358358
ins.remove();
359359
cache.remove(ins);
360360
}
361361
});
362362
} else {
363363
instances.forEach(function (ins) {
364-
if (ins && typeof ins.remove === 'function') {
364+
if (ins && isFunction(ins.remove)) {
365365
ins.remove();
366366
}
367367
});

dist/vue-create-api.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@
5151
return typeof fn === 'function';
5252
}
5353

54+
function isArray(arr) {
55+
return Object.prototype.toString.call(arr) === '[object Array]';
56+
}
57+
5458
function assert(condition, msg) {
5559
if (!condition) {
5660
throw new Error("[vue-create-api error]: " + msg);
@@ -335,39 +339,35 @@
335339
}
336340
},
337341
remove: function remove(component) {
338-
var idx = -1;
339342
var instances = cache.instances;
340343
var len = instances.length;
341344
for (var i = 0; i < len; i += 1) {
342345
var ins = instances[i];
343346
if (ins === component) {
344-
idx = i;
345-
break;
347+
instances.splice(i, 1);
348+
return;
346349
}
347350
}
348-
if (idx > -1) {
349-
instances.splice(idx, 1);
350-
}
351351
}
352352
};
353353

354354
function batchDestroy(filter) {
355-
var hasFilter = typeof filter === 'function';
355+
var hasFilter = isFunction(filter);
356356
var instancesCopy = cache.instances.slice();
357357
var instances = hasFilter ? filter(instancesCopy) : instancesCopy;
358-
if (!Array.isArray(instances)) {
358+
if (!isArray(instances)) {
359359
return;
360360
}
361361
if (hasFilter) {
362362
instances.forEach(function (ins) {
363-
if (ins && typeof ins.remove === 'function') {
363+
if (ins && isFunction(ins.remove)) {
364364
ins.remove();
365365
cache.remove(ins);
366366
}
367367
});
368368
} else {
369369
instances.forEach(function (ins) {
370-
if (ins && typeof ins.remove === 'function') {
370+
if (ins && isFunction(ins.remove)) {
371371
ins.remove();
372372
}
373373
});

dist/vue-create-api.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/index.js

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { camelize, escapeReg, isBoolean } from './util'
1+
import { camelize, escapeReg, isBoolean, isFunction, isArray } from './util'
22
import { assert, warn } from './debug'
33
import apiCreator from './creator'
44
import instantiateComponent from './instantiate'
@@ -21,39 +21,35 @@ const cache = {
2121
}
2222
},
2323
remove(component) {
24-
let idx = -1
2524
const instances = cache.instances
2625
const len = instances.length
2726
for (let i = 0; i < len; i += 1) {
2827
const ins = instances[i]
2928
if (ins === component) {
30-
idx = i
31-
break
29+
instances.splice(i, 1)
30+
return
3231
}
3332
}
34-
if (idx > -1) {
35-
instances.splice(idx, 1)
36-
}
3733
}
3834
}
3935

4036
function batchDestroy(filter) {
41-
const hasFilter = typeof filter === 'function'
37+
const hasFilter = isFunction(filter)
4238
const instancesCopy = cache.instances.slice()
4339
const instances = hasFilter ? filter(instancesCopy) : instancesCopy
44-
if (!Array.isArray(instances)) {
40+
if (!isArray(instances)) {
4541
return
4642
}
4743
if (hasFilter) {
4844
instances.forEach(ins => {
49-
if (ins && typeof ins.remove === 'function') {
45+
if (ins && isFunction(ins.remove)) {
5046
ins.remove()
5147
cache.remove(ins)
5248
}
5349
})
5450
} else {
5551
instances.forEach(ins => {
56-
if (ins && typeof ins.remove === 'function') {
52+
if (ins && isFunction(ins.remove)) {
5753
ins.remove()
5854
}
5955
})

src/util.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,6 @@ export function isFunction(fn) {
3030
return typeof fn === 'function'
3131
}
3232

33+
export function isArray(arr) {
34+
return Object.prototype.toString.call(arr) === '[object Array]'
35+
}

0 commit comments

Comments
 (0)