Advertisement
briank

JavaScript Just-In-Time Subclass Prototype Initialization

Mar 12th, 2021 (edited)
962
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  * A JavaScript code pattern for deferred/just-in-time subclass prototype initialization.
  3.  * Author: Brian Katzung
  4.  * See: https://www.kappacs.com/javascript-just-in-time-subclass-prototype-initialization/
  5.  */
  6. function Class () {
  7.     var c = Class;
  8.     return c.$c.call(this, arguments[0] !== c && arguments);
  9. }
  10. Class.$c = function (args) { // JIT 1x class init helper
  11.     // var c = Class, p = c.prototype; // "Base" classes (Object subclasses)
  12.     var s = SuperClass, c = Class, p = c.prototype = new s(s); // Subclasses
  13.     p.constructor = c; // Subclasses
  14.     c.$c = function (args) { return this.$i(args); }; // Post-init helper
  15.     p.$i = c.$i = function (args) { // Instance init helper
  16.         s.$i.call(this, args); // Subclasses
  17.         if (!args) return this; // Skip init on false
  18.         // Add this.properties here
  19.         return this;
  20.     };
  21.     // Add p.methods here
  22.     // return this.$i(args); // Base classes (original prototype)
  23.     return new c(c).$i(args); // Subclasses (altered prototype)
  24. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement