Sta*_*ile 5 javascript frontend svg web
我正在制作一个小型 JS 库。我正在使用 HTMLElement 界面创建自定义元素。现在我想制作一个自定义图形工具,为此,我希望我的元素扩展 SVGElement。
我有一个扩展 SVGElement 的Graph.js类和一个实例化图形的main.js 。
这是我的类Graph.js:
export class Graph extends SVGElement {
constructor() {
super();
}
}
Run Code Online (Sandbox Code Playgroud)
和Main.js:
import { Graph } from './Experimental/Graph/Graph.js';
customElements.define('pro-graph', Graph);
let graph = new Graph();
Run Code Online (Sandbox Code Playgroud)
但由于某种原因我收到此错误:
Uncaught TypeError: Illegal constructor.
<anonymous> debugger eval code:1
Run Code Online (Sandbox Code Playgroud)
问题是super();构造函数中的行相当于new SVGElement(),当您直接调用它时,它会抛出确切的异常。尝试这个也没有多大意义,因为不存在“纯” SVGElement。SVGElement是一个抽象基类,用于更专业的元素,例如SVGCircleElement,SVGPathElement以及所有其他元素。但它们也不能通过构造函数创建。创建 SVG 元素的常用方法是通过工厂方法,document.createElementNS如此处所述。
当您无法通过构造函数实例化一个类时,您就无法创建扩展它的类。
更好的库设计方法可能是: