ES6中new.target的作用与使用场景详解

作者:青柠时间:2026-10-23 16:33:41浏览:416

本文解析ES6中new.target关键字的作用,它用于判断类是否通过new调用。通过示例展示如何利用new.target限制类的直接实例化,实现类似抽象类的效果,确保类只能被继承使用。

ES6 new.target基本概念

本文详细介绍ES6中new.target关键字的功能及其典型应用场景。

在开发中,若需构建仅允许被继承而不能直接实例化的类,new.target是必要的工具。

1. 基本概念:

new.target属性返回通过new命令调用类时该类的名称。在子类继承父类的场景下,new.target会指向子类本身。


class Rectangle {
 constructor(length, width) {
  console.log(new.target === Rectangle);
  // ...
 }
}

class Square extends Rectangle {
 constructor(length) {
  super(length, length);
 }
}

var obj = new Square(3); // 输出 false

new.target的应用场景

2. new.target的主要用途:

限制类的调用方式,通过判断new.target是否未定义来控制实例化行为。

用于设计只能被继承使用的类,防止直接实例化。


class Shape {
 constructor() {
  if (new.target === Shape) {
   throw new Error('本类不能实例化');
  }
 }
}

class Rectangle extends Shape {
 constructor(length, width) {
  super();
  // ...
 }
}

var x = new Shape(); // 报错
var y = new Rectangle(3, 4); // 正确

参考文档:http://es6.ruanyifeng.com/#docs/class

感兴趣的用户可使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun测试上述代码的运行效果。

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

作者最新文章