JavaScript - Reflect.setPrototypeOf() 方法



Reflect.setPrototypeOf() 方法允许您设置对象的原型。它是 Reflect API 的一部分,Reflect API 提供了许多用于执行元编程任务的静态方法,例如属性操作和属性操作的拦截。

如果您想修改现有对象的原型,可以使用 Reflect.setPrototypeOf() 方法。这在您想要创建一个从特定原型继承的对象或想要扩展或修改对象行为的情况下非常有用。

语法

以下是 JavaScript Reflect.setPrototypeOf() 方法的语法:

Reflect.setPrototypeOf(target, prototype)

参数

此方法接受两个参数。下面描述了这些参数:

  • target - 要在其上设置属性的对象。

  • prototype - 包含对象新原型的对象。它可以是任何对象或 null。

返回值

此方法返回一个布尔值,指示原型是否成功设置。

示例

示例 1

让我们看下面的例子,我们将设置一个对象的原型。

<html>
   <style>
      body {
         font-family: verdana;
         color: #DE3163;
      }
   </style>
   <body>
      <script>
         const x = {};
         const y = {
            a: 10
         };
         Reflect.setPrototypeOf(x, y);
         document.write(x.a);
      </script>
   </body>
</html>

如果我们执行上面的程序,它将在网页上显示一个数字。

示例 2

考虑另一种情况,我们将更改现有对象的原型。

<html>
   <style>
      body {
         font-family: verdana;
         color: #DE3163;
      }
   </style>
   <body>
      <script>
         const x = {
            a: 22
         };
         const y = {
            b: 123
         };
         Reflect.setPrototypeOf(x, y);
         document.write(x.b);
      </script>
   </body>
</html>

执行上述脚本后,它将在网页上显示一个数字。

示例 3

在下面的示例中,我们将原型设置为 null。

<html>
   <style>
      body {
         font-family: verdana;
         color: #DE3163;
      }
   </style>
   <body>
      <script>
         const x = {};
         Reflect.setPrototypeOf(x, null);
         document.write(Object.getPrototypeOf(x));
      </script>
   </body>
</html>

当我们执行上述脚本时,输出窗口将弹出,在网页上显示文本。

示例 4

以下是示例,我们将检查对象是否从原型继承。

<html>
   <style>
      body {
         font-family: verdana;
         color: #DE3163;
      }
   </style>
   <body>
      <script>
         let x = {
            a: 11
         };
         let y = {};
         Reflect.setPrototypeOf(y, x);
         document.write(Reflect.getPrototypeOf(y) === x);
      </script>
   </body>
</html>

运行上述脚本后,它将生成一个输出,其中包含显示在网页上的文本。

广告