tinymce.full.js
function create(s, p, root) {
      var self = this, sp, ns, cn, scn, c, de = 0;

      // Parse : <prefix> <class>:<super class>
      s = /^((static) )?([\w.]+)(:([\w.]+))?/.exec(s);
      cn = s[3].match(/(^|\.)(\w+)$/i)[2]; // Class name

      // Create namespace for new class
      ns = self.createNS(s[3].replace(/\.\w+$/, ''), root);

      // Class already exists
      if (ns[cn]) {
        return;
      }

      // Make pure static class
      if (s[2] == 'static') {
        ns[cn] = p;

        if (this.onCreate) {
          this.onCreate(s[2], s[3], ns[cn]);
        }

        return;
      }

      // Create default constructor
      if (!p[cn]) {
        p[cn] = function () { };
        de = 1;
      }

      // Add constructor and methods
      ns[cn] = p[cn];
      self.extend(ns[cn].prototype, p);

      // Extend
      if (s[5]) {
        sp = self.resolve(s[5]).prototype;
        scn = s[5].match(/\.(\w+)$/i)[1]; // Class name

        // Extend constructor
        c = ns[cn];
        if (de) {
          // Add passthrough constructor
          ns[cn] = function () {
            return sp[scn].apply(this, arguments);
          };
        } else {
          // Add inherit constructor
          ns[cn] = function () {
            this.parent = sp[scn];
            return c.apply(this, arguments);
          };
        }
        ns[cn].prototype[cn] = ns[cn];

        // Add super methods
        self.each(sp, function (f, n) {
          ns[cn].prototype[n] = sp[n];
        });

        // Add overridden methods
        self.each(p, function (f, n) {
          // Extend methods if needed
          if (sp[n]) {
            ns[cn].prototype[n] = function () {
              this.parent = sp[n];
              return f.apply(this, arguments);
            };
          } else {
            if (n != cn) {
              ns[cn].prototype[n] = f;
            }
          }
        });
      }

      // Add static methods
      /*jshint sub:true*/
      /*eslint dot-notation:0*/
      self.each(p['static'], function (f, n) {
        ns[cn][n] = f;
      });
    }
function create(s, p, root) {
      var self = this, sp, ns, cn, scn, c, de = 0;

      // Parse : <prefix> <class>:<super class>
      s = /^((static) )?([\w.]+)(:([\w.]+))?/.exec(s);
      cn = s[3].match(/(^|\.)(\w+)$/i)[2]; // Class name

      // Create namespace for new class
      ns = self.createNS(s[3].replace(/\.\w+$/, ''), root);

      // Class already exists
      if (ns[cn]) {
        return;
      }

      // Make pure static class
      if (s[2] == 'static') {
        ns[cn] = p;

        if (this.onCreate) {
          this.onCreate(s[2], s[3], ns[cn]);
        }

        return;
      }

      // Create default constructor
      if (!p[cn]) {
        p[cn] = function () { };
        de = 1;
      }

      // Add constructor and methods
      ns[cn] = p[cn];
      self.extend(ns[cn].prototype, p);

      // Extend
      if (s[5]) {
        sp = self.resolve(s[5]).prototype;
        scn = s[5].match(/\.(\w+)$/i)[1]; // Class name

        // Extend constructor
        c = ns[cn];
        if (de) {
          // Add passthrough constructor
          ns[cn] = function () {
            return sp[scn].apply(this, arguments);
          };
        } else {
          // Add inherit constructor
          ns[cn] = function () {
            this.parent = sp[scn];
            return c.apply(this, arguments);
          };
        }
        ns[cn].prototype[cn] = ns[cn];

        // Add super methods
        self.each(sp, function (f, n) {
          ns[cn].prototype[n] = sp[n];
        });

        // Add overridden methods
        self.each(p, function (f, n) {
          // Extend methods if needed
          if (sp[n]) {
            ns[cn].prototype[n] = function () {
              this.parent = sp[n];
              return f.apply(this, arguments);
            };
          } else {
            if (n != cn) {
              ns[cn].prototype[n] = f;
            }
          }
        });
      }

      // Add static methods
      /*jshint sub:true*/
      /*eslint dot-notation:0*/
      self.each(p['static'], function (f, n) {
        ns[cn][n] = f;
      });
    }
function create ( s , p , root ) { var self = this , sp , ns , cn , scn , c , de = 0 ; // Parse : <prefix> <class>:<super class> s = / ^((static) )?([\w.]+)(:([\w.]+))? / . exec ( s ) ; cn = s [ 3 ] . match ( / (^|\.)(\w+)$ / i ) [ 2 ] ; // Class name // Create namespace for new class ns = self . createNS ( s [ 3 ] . replace ( / \.\w+$ / , '' ) , root ) ; // Class already exists if ( ns [ cn ] ) { return ; } // Make pure static class if ( s [ 2 ] == 'static' ) { ns [ cn ] = p ; if ( this . onCreate ) { this . onCreate ( s [ 2 ] , s [ 3 ] , ns [ cn ] ) ; } return ; } // Create default constructor if ( ! p [ cn ] ) { p [ cn ] = function ( ) { } ; de = 1 ; } // Add constructor and methods ns [ cn ] = p [ cn ] ; self . extend ( ns [ cn ] . prototype , p ) ; // Extend if ( s [ 5 ] ) { sp = self . resolve ( s [ 5 ] ) . prototype ; scn = s [ 5 ] . match ( / \.(\w+)$ / i ) [ 1 ] ; // Class name // Extend constructor c = ns [ cn ] ; if ( de ) { // Add passthrough constructor ns [ cn ] = function ( ) { return sp [ scn ] . apply ( this , arguments ) ; } ; } else { // Add inherit constructor ns [ cn ] = function ( ) { this . parent = sp [ scn ] ; return c . apply ( this , arguments ) ; } ; } ns [ cn ] . prototype [ cn ] = ns [ cn ] ; // Add super methods self . each ( sp , function ( f , n ) { ns [ cn ] . prototype [ n ] = sp [ n ] ; } ) ; // Add overridden methods self . each ( p , function ( f , n ) { // Extend methods if needed if ( sp [ n ] ) { ns [ cn ] . prototype [ n ] = function ( ) { this . parent = sp [ n ] ; return f . apply ( this , arguments ) ; } ; } else { if ( n != cn ) { ns [ cn ] . prototype [ n ] = f ; } } } ) ; } // Add static methods /*jshint sub:true*/ /*eslint dot-notation:0*/ self . each ( p [ 'static' ] , function ( f , n ) { ns [ cn ] [ n ] = f ; } ) ; }
Creates a class, subclass or static singleton.
More details on this method can be found in the Wiki.

@method create
@param {String} s Class name, inheritance and prefix.
@param {Object} p Collection of methods to add to the class.
@param {Object} root Optional root object defaults to the global window object.
@example
// Creates a basic class
tinymce.create('tinymce.somepackage.SomeClass', {
SomeClass: function() {
// Class constructor
},

method: function() {
// Some method
}
});

// Creates a basic subclass class
tinymce.create('tinymce.somepackage.SomeSubClass:tinymce.somepackage.SomeClass', {
SomeSubClass: function() {
// Class constructor
this.parent(); // Call parent constructor
},

method: function() {
// Some method
this.parent(); // Call parent method
},

'static': {
staticMethod: function() {
// Static method
}
}
});

// Creates a singleton/static class
tinymce.create('static tinymce.somepackage.SomeSingletonClass', {
method: function() {
// Some method
}
});
Creates a class subclass or static singleton . More details on this method can be found in the Wiki .