ES6中new.target的作用与使用场景详解
本文解析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程序设计有所帮助。
ES6模块化中js文件怎么用import和export交互
2026-11-05 17:00:48
JS读取本地文件时报错或无响应的常见原因
2026-11-05 16:32:31
let、const与var的区别:JavaScript变量声明最佳实践
2026-11-05 14:16:38
JS中直接定义静态二维数组的字面量写法
2026-11-05 14:16:08
JS 怎么查找字符串中所有匹配项的位置
2026-11-05 14:15:53
