ES11 中的 new.target 特性详解

在之前的 JavaScript 版本中,构造函数中使用的 this 始终指向当前方法的实例,而属性 prototype 是创建该实例的对象。但是在 ES11 中,新的 new.target 属性提供了一种方法来获取构造函数的引用,而不是实例本身的引用。本文将深入探讨 new.target 属性的详细内容,并提供使用它的示例代码。

new.target 属性

new.target 是一个元属性,表示当一个函数或构造函数使用 new 关键字进行实例化时,该函数或构造函数的引用。如果函数或构造函数不是使用 new 关键字进行实例化,则 new.targetundefined。元属性是只读的,并且在函数内部始终可用。

在上面的示例中,Person1Person2 函数都使用 new.target 属性进行引用,但 Person2 函数使用了一个 call 方法,所以 new.target 为 undefined。

使用 new.target 创建继承的类

在 ES11 中,我们可以使用 new.target 属性来创建继承的类。在构造函数内使用 new.target 属性可以确保在继承时调用正确的构造函数。例如,我们有一个 Person 类和一个 Student 类,Student 类继承自 Person 类。我们可以在 Student 类的构造函数中使用 new.target 属性来确保在继承时调用正确的构造函数。

在上面的示例中,Student 类继承了 Person 类,并在其构造函数中使用了 new.target 属性。当我们创建 Student 类的实例时,将首先调用 Person 的构造函数,然后调用 Student 的构造函数。

总结

new.target 属性是 ES11 中的新特性,它提供了一种获取构造函数的引用的方法,而不是实例本身的引用。在构造函数内使用 new.target 属性可以确保在继承时调用正确的构造函数。通过本文的学习,您可以更好地理解并应用 new.target 属性。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/653f4f2c7d4982a6eb8d9ce6


纠错
反馈