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
							 | 
						||
| 
								 | 
							
								};
							 |