JavaScript | Método Reflect.setPrototypeOf()

El método Reflect.setPrototypeOf() en JavaScript se usa para establecer el prototipo de un objeto específico en otro objeto o en Null. Este método devuelve el valor booleano de la operación que se realizó correctamente.
Sintaxis: 
 

Reflect.setPrototypeOf(obj, prototype)

Parámetros: 
 

  • Obj: este parámetro contiene el objeto de destino y se utiliza para configurar el prototipo.
  • Prototipo: este parámetro contiene el nuevo prototipo del objeto. Puede ser cualquier objeto o simplemente un nulo.

Valor de retorno: este método siempre devuelve un valor booleano que indica si la configuración del prototipo se realizó correctamente o no.
Excepciones: un TypeError es una excepción dada como resultado, cuando el destino no es un objeto.
Los siguientes ejemplos ilustran el método Reflect.setPrototypeOf() en JavaScript:
Ejemplo 1: 
 

javascript

const object1 = {};
 
console.log(Reflect.setPrototypeOf(object1, Object.prototype));
console.log(Reflect.setPrototypeOf(object1, null));
 
const object2 = {};
console.log(Reflect.setPrototypeOf(Object.freeze(object2), null));
 
let object3 = { 
  gfg() { 
    return 'value'; 
  } 
} 
let obj = { 
  geeks() { 
    return 'answer'; 
  } 
} 
Object.setPrototypeOf(obj, object3); 
console.dir(obj);  
console.log(obj.geeks());   
console.log(obj.gfg()); 

Producción: 
 

true
true
false
"answer"
"value"

Ejemplo 2: 
 

javascript

console.log(Reflect.setPrototypeOf({}, Object.prototype) );
  
// It can change an object's [[Prototype]] to null.
console.log(Reflect.setPrototypeOf({}, null));
  
// Returns false if target is not extensible.
console.log(Reflect.setPrototypeOf(Object.freeze({}), null)); 
  
// Returns false if it cause a prototype chain cycle.
let target = {}
let proto = Object.create(target)
console.log(Reflect.setPrototypeOf(target, proto) ); 
  
var object3 = { 
   gfg() { 
     console.log(this.name + ' have fun.'); 
   } 
}; 
class objt { 
   constructor(name) { 
   this.name = name; 
  } 
} 
Reflect.setPrototypeOf(objt.prototype, object3); 
 
// If you do not do this you will get
// a TypeError when you invoke speak 
var val = new objt('Geeks'); 
val.gfg();

Producción: 
 

true
true
false
false
"Geeks have fun."

Navegadores compatibles: los navegadores compatibles con el método JavaScript Reflect.setPrototypeOf() se enumeran a continuación: 
 

  • Google Chrome 49 y superior
  • Borde 12 y superior
  • Firefox 42 y superior
  • Ópera 36 y superior
  • Safari 10 y superior

Publicación traducida automáticamente

Artículo escrito por SHUBHAMSINGH10 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *