12 lines
		
	
	
		
			645 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			12 lines
		
	
	
		
			645 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // 7.1.1 ToPrimitive(input [, PreferredType])
 | |
| var isObject = require('./$.is-object');
 | |
| // instead of the ES6 spec version, we didn't implement @@toPrimitive case
 | |
| // and the second argument - flag - preferred type is a string
 | |
| module.exports = function(it, S){
 | |
|   if(!isObject(it))return it;
 | |
|   var fn, val;
 | |
|   if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
 | |
|   if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;
 | |
|   if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
 | |
|   throw TypeError("Can't convert object to primitive value");
 | |
| }; | 
