JavaScript handler.setPrototypeOf() Method
The handler.setPrototypeOf() method in JavaScript is a trap for Object.setPrototypeOf() method and it returns a Boolean value.
Syntax:
const p = new Proxy(target, { setPrototypeOf: function(target, prototype) { } });
Parameters: This method accepts two parameters as mentioned above and described below:
- target: This parameter is the target object.
- prototype: This parameter is the object’s new prototype or null.
Return value: This method returns a boolean value. It returns true if the [[Prototype]] was successfully changed.
The below examples illustrate the handler.setPrototypeOf() method in JavaScript:
Example 1: In this example, we will see the use of the handler.setPrototypeOf() method in JavaScript.
javascript
<script> const handler1 = { setPrototypeOf(gfg, gfgProto) { gfg.geneticallyModified = true ; return false ; } }; const gfgProto = {}; const gfg = { geneticallyModified : false }; const proxy1 = new Proxy(gfg, handler1); console.log(Reflect.setPrototypeOf(proxy1, gfgProto)); console.log(gfg.geneticallyModified); var soo={ foo:1 } var proxy = new Proxy(soo, { setPrototypeOf(target, newProto) { } }); console.log( 'a' in proxy); </script> |
Output:
false true false
Example 2: In this example, we will see the use of the handler.setPrototypeOf() method in JavaScript. It throws a custom error.
javascript
<script> const handlerThrows = { setPrototypeOf(target, newProto) { throw new Error( 'custom error' ); } }; const newProto = {}, target = {}; const p2 = new Proxy(target, handlerThrows); console.log(Object.setPrototypeOf(p2, newProto)); console.log(Reflect.setPrototypeOf(p2, newProto)); </script> |
Output:
Error: custom error
We have a complete list of Javascript Functions, to check those go through the Javascript Functions Complete Reference article.
Supported Browsers: The browsers supported by handler.setPrototypeOf() method are listed below:
- Google Chrome 49 and above
- Edge 12 and above
- Firefox 49 and above
- Opera 36 and above
- Safari 10 and above
Please Login to comment...