<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script type="text/javascript"> var Class = (function() { function create(classDefinition, parentPrototype) { var _NewClass = function() { if (this.initialize && typeof this.initialize == 'function') { this.initialize.apply(this,arguments) } }; var _name; if (parentPrototype) { _NewClass.prototype = new parentPrototype.constructor(); for (_name in parentPrototype) { _NewClass.prototype[_name] = parentPrototype[_name]; } } function polymorph(thisFunction, parentFunction) { return function() { var output; this._parent = parentFunction; output = thisFunction.apply(this, arguments); delete this._parent; return output; } } for (_name in classDefinition) { if (classDefinition.hasOwnProperty(_name)) { if (parentPrototype && parentPrototype[_name] && typeof classDefinition[_name] === 'function') { _NewClass.prototype[_name] = polymorph(classDefinition[_name], parentPrototype[_name]); } else { _NewClass.prototype[_name] = classDefinition[_name]; } } } _NewClass.prototype.constructor = _NewClass; _NewClass.extend = extend; return _NewClass; } function extend(classDefinition) { return create(classDefinition, this.prototype); } return { create: create } }()); var Accommodation = Class.create({ isLocked:true, isAlarmed:true, lock:function(){ this.isLocked = true; }, unlock:function(){ this.isLocked = false; }, initialize:function(){ this.unlock(); } }) var myAccommodation = new Accommodation(); console.log(myAccommodation); </script> </body> </html>