You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					26 lines
				
				906 B
			
		
		
			
		
	
	
					26 lines
				
				906 B
			| 
											3 years ago
										 | // Works with __proto__ only. Old v8 can't work with null proto objects.
 | ||
|  | /* eslint-disable no-proto */ | ||
|  | var isObject = require('./_is-object'); | ||
|  | var anObject = require('./_an-object'); | ||
|  | var check = function (O, proto) { | ||
|  |   anObject(O); | ||
|  |   if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!"); | ||
|  | }; | ||
|  | module.exports = { | ||
|  |   set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
 | ||
|  |     function (test, buggy, set) { | ||
|  |       try { | ||
|  |         set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2); | ||
|  |         set(test, []); | ||
|  |         buggy = !(test instanceof Array); | ||
|  |       } catch (e) { buggy = true; } | ||
|  |       return function setPrototypeOf(O, proto) { | ||
|  |         check(O, proto); | ||
|  |         if (buggy) O.__proto__ = proto; | ||
|  |         else set(O, proto); | ||
|  |         return O; | ||
|  |       }; | ||
|  |     }({}, false) : undefined), | ||
|  |   check: check | ||
|  | }; |