Skip to content

Commit 4a3b4c4

Browse files
sapicsyyx990803
authored andcommitted
Small performance improvement in watcher.js (vuejs#4069)
* Minor minification in codegen/index.js * Small performance improvement in watcher.js * Use a faster return pattern in watcher.js (@HerringtonDarkholme suggestion)
1 parent a632d60 commit 4a3b4c4

File tree

2 files changed

+25
-25
lines changed

2 files changed

+25
-25
lines changed

src/compiler/codegen/index.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -221,9 +221,9 @@ function genText (text: ASTText | ASTExpression): string {
221221
function genSlot (el: ASTElement): string {
222222
const slotName = el.slotName || '"default"'
223223
const children = genChildren(el)
224-
return children
225-
? `_t(${slotName},${children})`
226-
: `_t(${slotName})`
224+
return `_t(${slotName}${
225+
children ? `,${children}` : ''
226+
})`
227227
}
228228

229229
// componentName is el.component, take it as argument to shun flow's pessimistic refinement

src/core/observer/watcher.js

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -230,30 +230,30 @@ export default class Watcher {
230230
* is collected as a "deep" dependency.
231231
*/
232232
const seenObjects = new Set()
233-
function traverse (val: any, seen?: Set) {
233+
function traverse (val: any) {
234+
seenObjects.clear()
235+
_traverse(val, seenObjects)
236+
}
237+
238+
function _traverse (val: any, seen: Set) {
234239
let i, keys
235-
if (!seen) {
236-
seen = seenObjects
237-
seen.clear()
238-
}
239240
const isA = Array.isArray(val)
240-
const isO = isObject(val)
241-
if ((isA || isO) && Object.isExtensible(val)) {
242-
if (val.__ob__) {
243-
const depId = val.__ob__.dep.id
244-
if (seen.has(depId)) {
245-
return
246-
} else {
247-
seen.add(depId)
248-
}
249-
}
250-
if (isA) {
251-
i = val.length
252-
while (i--) traverse(val[i], seen)
253-
} else if (isO) {
254-
keys = Object.keys(val)
255-
i = keys.length
256-
while (i--) traverse(val[keys[i]], seen)
241+
if ((!isA && !isObject(val)) || !Object.isExtensible(val)) {
242+
return
243+
}
244+
if (val.__ob__) {
245+
const depId = val.__ob__.dep.id
246+
if (seen.has(depId)) {
247+
return
257248
}
249+
seen.add(depId)
250+
}
251+
if (isA) {
252+
i = val.length
253+
while (i--) _traverse(val[i], seen)
254+
} else {
255+
keys = Object.keys(val)
256+
i = keys.length
257+
while (i--) _traverse(val[keys[i]], seen)
258258
}
259259
}

0 commit comments

Comments
 (0)