JS: Define a Class Without class
This page shows you how to define a class, in different ways.
first, normally, with keyword class.
then:
- without keyword
class. - without keyword
class,new. - without keyword
class,new,this. - without keyword
class,new,this,function.
Using Keyword class
Suppose we want to define a class Fcon,
with a constructor Fcon(x) that adds a property key xprop with value x,
and one prototype method method1,
and one static method staticm1.
// Using Keyword class class Fcon { constructor(x) { this.xprop = x; } static staticm1(x) { return "staticm1 " + x.toString(); } method1(x) { return "method1 " + x.toString(); } } // s------------------------------ console.assert(Fcon.staticm1(3) === "staticm1 3"); const xobj = new Fcon(4); console.assert(Object.hasOwn(xobj, "xprop") === true); console.assert(xobj.xprop === 4); console.assert(xobj.method1(2) === "method1 2"); console.assert(Reflect.getPrototypeOf(xobj) === Fcon.prototype); console.assert(xobj.constructor === Fcon);
Without Keyword class
// define a class without Keyword class function Fcon(x) { this.xprop = x; } Fcon.staticm1 = function (x) { return "staticm1 " + x.toString(); }; Fcon.prototype.method1 = function (x) { return "method1 " + x.toString(); }; // s------------------------------ console.assert(Fcon.staticm1(3) === "staticm1 3"); const xobj = new Fcon(4); console.assert(Object.hasOwn(xobj, "xprop") === true); console.assert(xobj.xprop === 4); console.assert(xobj.method1(2) === "method1 2"); console.assert(Reflect.getPrototypeOf(xobj) === Fcon.prototype); console.assert(xobj.constructor === Fcon);
Without Keywords class, new, this
// define a class without Keyword class new this const Fcon = (x) => { const resultObj = Object.create(Fcon.prototype, {}); resultObj.xprop = x; return resultObj; }; Fcon.staticm1 = function (x) { return "staticm1 " + x.toString(); }; Fcon.prototype = { method1: function (x) { return "method1 " + x.toString(); }, constructor: Fcon, }; // s------------------------------ console.assert(Fcon.staticm1(3) === "staticm1 3"); const xobj = Fcon(4); console.assert(Object.hasOwn(xobj, "xprop") === true); console.assert(xobj.xprop === 4); console.assert(xobj.method1(2) === "method1 2"); console.assert(Reflect.getPrototypeOf(xobj) === Fcon.prototype); console.assert(xobj.constructor === Fcon);
Without Keywords class, new, this, function
// define a class without Keyword class new this function const Fcon = (x) => { const resultObj = Object.create(Fcon.prototype, {}); resultObj.xprop = x; return resultObj; }; Fcon.staticm1 = (x) => { return "staticm1 " + x.toString(); }; Fcon.prototype = { method1: ((x) => { return "method1 " + x.toString(); }), constructor: Fcon, }; // s------------------------------ console.assert(Fcon.staticm1(3) === "staticm1 3"); const xobj = Fcon(4); console.assert(Object.hasOwn(xobj, "xprop") === true); console.assert(xobj.xprop === 4); console.assert(xobj.method1(2) === "method1 2"); console.assert(Reflect.getPrototypeOf(xobj) === Fcon.prototype); console.assert(xobj.constructor === Fcon);
JavaScript. Constructor, Class
- JS: Constructor and Class
- JS: this (binding)
- JS: Constructor
- JS: prototype (property)
- JS: new (operator)
- JS: instanceof (operator)
- JS: constructor (property)
- JS: typeof, instanceof, .constructor
- JS: class (keyword)
- JS: Class Expression
- JS: typeof Class
- JS: static (keyword)
- JS: extends (keyword)
- JS: super (keyword)
- JS: Define a Class Without class