35 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| 
 | |
| var d            = require("d")
 | |
|   , NativeSymbol = require("ext/global-this").Symbol;
 | |
| 
 | |
| module.exports = function (SymbolPolyfill) {
 | |
| 	return Object.defineProperties(SymbolPolyfill, {
 | |
| 		// To ensure proper interoperability with other native functions (e.g. Array.from)
 | |
| 		// fallback to eventual native implementation of given symbol
 | |
| 		hasInstance: d(
 | |
| 			"", (NativeSymbol && NativeSymbol.hasInstance) || SymbolPolyfill("hasInstance")
 | |
| 		),
 | |
| 		isConcatSpreadable: d(
 | |
| 			"",
 | |
| 			(NativeSymbol && NativeSymbol.isConcatSpreadable) ||
 | |
| 				SymbolPolyfill("isConcatSpreadable")
 | |
| 		),
 | |
| 		iterator: d("", (NativeSymbol && NativeSymbol.iterator) || SymbolPolyfill("iterator")),
 | |
| 		match: d("", (NativeSymbol && NativeSymbol.match) || SymbolPolyfill("match")),
 | |
| 		replace: d("", (NativeSymbol && NativeSymbol.replace) || SymbolPolyfill("replace")),
 | |
| 		search: d("", (NativeSymbol && NativeSymbol.search) || SymbolPolyfill("search")),
 | |
| 		species: d("", (NativeSymbol && NativeSymbol.species) || SymbolPolyfill("species")),
 | |
| 		split: d("", (NativeSymbol && NativeSymbol.split) || SymbolPolyfill("split")),
 | |
| 		toPrimitive: d(
 | |
| 			"", (NativeSymbol && NativeSymbol.toPrimitive) || SymbolPolyfill("toPrimitive")
 | |
| 		),
 | |
| 		toStringTag: d(
 | |
| 			"", (NativeSymbol && NativeSymbol.toStringTag) || SymbolPolyfill("toStringTag")
 | |
| 		),
 | |
| 		unscopables: d(
 | |
| 			"", (NativeSymbol && NativeSymbol.unscopables) || SymbolPolyfill("unscopables")
 | |
| 		)
 | |
| 	});
 | |
| };
 |