inheritance - How to create Abstract base class in JavaScript that can't be Instantiated -
i have class
function node() { //implementation }
and class
function attributionalnode() { this.prototype.setattr = function (attr) { this.attext = attr; }; } attributionalnode.prototype = new node(); attributionalnode.prototype.constructor = attributionalnode;
how make class node() can't instantiated? e.g when try
var node = new node();
so throws exception?
this work:
function node() { if (this.constructor === node) { throw new error("cannot instantiate class"); } } function attributionalnode() { node.call(this); // call super } attributionalnode.prototype = object.create(node.prototype); attributionalnode.prototype.setattr = function (attr) { this.attext = attr; }; attributionalnode.prototype.constructor = attributionalnode; var attrnode = new attributionalnode(); console.log(attrnode); new node();
note: cannot refer this.prototype
inside constructor, prototype property of constructor function, not of instances.
also, see here article on how extend js classes.
Comments
Post a Comment