@@ -184,39 +184,111 @@ function isBigUint64Array(value) {
184184}
185185exports . isBigUint64Array = isBigUint64Array ;
186186
187- function isMap ( value ) {
187+ function isMapToString ( value ) {
188188 return ObjectToString ( value ) === '[object Map]' ;
189189}
190+ isMapToString . working = typeof Map !== 'undefined' && isMapToString ( new Map ( ) ) ;
191+
192+ function isMap ( value ) {
193+ if ( typeof Map === 'undefined' ) {
194+ return false ;
195+ }
196+
197+ return isMapToString . working
198+ ? isMapToString ( value )
199+ : value instanceof Map ;
200+ }
190201exports . isMap = isMap ;
191202
192- function isSet ( value ) {
203+ function isSetToString ( value ) {
193204 return ObjectToString ( value ) === '[object Set]' ;
194205}
206+ isSetToString . working = typeof Set !== 'undefined' && isSetToString ( new Set ( ) ) ;
207+ function isSet ( value ) {
208+ if ( typeof Set === 'undefined' ) {
209+ return false ;
210+ }
211+
212+ return isSetToString . working
213+ ? isSetToString ( value )
214+ : value instanceof Set ;
215+ }
195216exports . isSet = isSet ;
196217
197- function isWeakMap ( value ) {
218+ function isWeakMapToString ( value ) {
198219 return ObjectToString ( value ) === '[object WeakMap]' ;
199220}
221+ isWeakMapToString . working = typeof WeakMap !== 'undefined' && isWeakMapToString ( new WeakMap ( ) ) ;
222+ function isWeakMap ( value ) {
223+ if ( typeof WeakMap === 'undefined' ) {
224+ return false ;
225+ }
226+
227+ return isWeakMapToString . working
228+ ? isWeakMapToString ( value )
229+ : value instanceof WeakMap ;
230+ }
200231exports . isWeakMap = isWeakMap ;
201232
202- function isWeakSet ( value ) {
233+ function isWeakSetToString ( value ) {
203234 return ObjectToString ( value ) === '[object WeakSet]' ;
204235}
236+ isWeakSetToString . working = typeof WeakSet !== 'undefined' && isWeakSetToString ( new WeakSet ( ) ) ;
237+ function isWeakSet ( value ) {
238+ return isWeakSetToString ( value ) ;
239+ if ( typeof WeakSet === 'undefined' ) {
240+ return false ;
241+ }
242+
243+ return isWeakSetToString . working
244+ ? isWeakSetToString ( value )
245+ : value instanceof WeakSet ;
246+ }
205247exports . isWeakSet = isWeakSet ;
206248
207- function isArrayBuffer ( value ) {
249+ function isArrayBufferToString ( value ) {
208250 return ObjectToString ( value ) === '[object ArrayBuffer]' ;
209251}
252+ isArrayBufferToString . working = typeof ArrayBuffer !== 'undefined' && isArrayBufferToString ( new ArrayBuffer ( ) ) ;
253+ function isArrayBuffer ( value ) {
254+ if ( typeof ArrayBuffer === 'undefined' ) {
255+ return false ;
256+ }
257+
258+ return isArrayBufferToString . working
259+ ? isArrayBufferToString ( value )
260+ : value instanceof ArrayBuffer ;
261+ }
210262exports . isArrayBuffer = isArrayBuffer ;
211263
212- function isDataView ( value ) {
264+ function isDataViewToString ( value ) {
213265 return ObjectToString ( value ) === '[object DataView]' ;
214266}
267+ isDataViewToString . working = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined' && isDataViewToString ( new DataView ( new ArrayBuffer ( ) ) ) ;
268+ function isDataView ( value ) {
269+ if ( typeof DataView === 'undefined' ) {
270+ return false ;
271+ }
272+
273+ return isDataViewToString . working
274+ ? isDataViewToString ( value )
275+ : value instanceof DataView ;
276+ }
215277exports . isDataView = isDataView ;
216278
217- function isSharedArrayBuffer ( value ) {
279+ function isSharedArrayBufferToString ( value ) {
218280 return ObjectToString ( value ) === '[object SharedArrayBuffer]' ;
219281}
282+ isSharedArrayBufferToString . working = typeof SharedArrayBuffer !== 'undefined' && isSharedArrayBufferToString ( new SharedArrayBuffer ( ) ) ;
283+ function isSharedArrayBuffer ( value ) {
284+ if ( typeof SharedArrayBuffer === 'undefined' ) {
285+ return false ;
286+ }
287+
288+ return isSharedArrayBufferToString . working
289+ ? isSharedArrayBufferToString ( value )
290+ : value instanceof SharedArrayBuffer ;
291+ }
220292exports . isSharedArrayBuffer = isSharedArrayBuffer ;
221293
222294function isAsyncFunction ( value ) {
0 commit comments