Skip to content

Commit 4a4ed5d

Browse files
authored
chore(watch): use polyfill instead of object.is (#898)
1 parent b71e690 commit 4a4ed5d

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

src/apis/watch.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
isPlainObject,
1212
isSet,
1313
isMap,
14+
isSame,
1415
} from '../utils'
1516
import { defineComponentInstance } from '../utils/helper'
1617
import { getVueConstructor } from '../runtimeContext'
@@ -346,7 +347,7 @@ function createWatcher(
346347
if (
347348
!deep &&
348349
isMultiSource &&
349-
n.every((v: any, i: number) => Object.is(v, o[i]))
350+
n.every((v: any, i: number) => isSame(v, o[i]))
350351
)
351352
return
352353
// cleanup before running cb again

src/utils/utils.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,3 +112,15 @@ export function logError(err: Error, vm: Vue, info: string) {
112112
throw err
113113
}
114114
}
115+
116+
/**
117+
* Object.is polyfill
118+
* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
119+
* */
120+
export function isSame(value1: any, value2: any): boolean {
121+
if (value1 === value2) {
122+
return value1 !== 0 || 1 / value1 === 1 / value2
123+
} else {
124+
return value1 !== value1 && value2 !== value2
125+
}
126+
}

0 commit comments

Comments
 (0)