21 lines
		
	
	
		
			548 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			21 lines
		
	
	
		
			548 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| 
 | |
| var global     = require("ext/global-this")
 | |
|   , validTypes = { object: true, symbol: true };
 | |
| 
 | |
| module.exports = function () {
 | |
| 	var Symbol = global.Symbol;
 | |
| 	var symbol;
 | |
| 	if (typeof Symbol !== "function") return false;
 | |
| 	symbol = Symbol("test symbol");
 | |
| 	try { String(symbol); }
 | |
| 	catch (e) { return false; }
 | |
| 
 | |
| 	// Return 'true' also for polyfills
 | |
| 	if (!validTypes[typeof Symbol.iterator]) return false;
 | |
| 	if (!validTypes[typeof Symbol.toPrimitive]) return false;
 | |
| 	if (!validTypes[typeof Symbol.toStringTag]) return false;
 | |
| 
 | |
| 	return true;
 | |
| };
 |