Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Classical Object-Oriented JavaScript framework

branch: master

Revert "Removed unnecessary try/catch from isInstanceOf"

This reverts commit 58ee52a.

As it turns out, IE9 allows use of instanceof with special object types, not
just functions. One such example is HTMLElement; its type is `object', whereas
in Firefox and Chromium it is `function'. There is no reliable way to perform
this detection.

Therefore, the try/catch here is more reliable.
latest commit bb98c9afb3
Mike Gerwitz authored April 21, 2014
Octocat-spinner-32 doc Added documentation for implicit private members April 20, 2014
Octocat-spinner-32 lib Revert "Removed unnecessary try/catch from isInstanceOf" April 24, 2014
Octocat-spinner-32 test Exposing keyword bit values and bitmasks April 20, 2014
Octocat-spinner-32 tools No longer using __dirname in requires April 20, 2014
Octocat-spinner-32 .gitignore Can now build multiple performance logs April 09, 2014
Octocat-spinner-32 .mailmap Added .mailmap March 16, 2014
Octocat-spinner-32 COPYING Split COPYING into two separate files: COPYING and COPYING.LGPL June 13, 2012
Octocat-spinner-32 Began performance test case result HTML generation April 09, 2014
Octocat-spinner-32 README [copyright] Copyright assignment to the FSF April 09, 2014
Octocat-spinner-32 README.hacking Added beginning of README.hacking September 02, 2011
Octocat-spinner-32 Added GNU to ease.js license notice in April 09, 2014
Octocat-spinner-32 README.todo Removed unit test refactoring mention from README.todo January 20, 2014
Octocat-spinner-32 README.traits README.traits containing remaining TODOs March 15, 2014
Octocat-spinner-32 Version bump 0.2.1 April 17, 2014
Octocat-spinner-32 index.js [copyright] Copyright assignment to the FSF April 09, 2014
Octocat-spinner-32 Updated homepage and git repo URLs March 20, 2014

GNU ease.js

GNU ease.js is a classical object-oriented framework for Javascript, intended to eliminate boilerplate code and "ease" the transition into JavaScript from other object-oriented languages.

Current support includes:

  • Simple and intuitive class definitions
  • Classical inheritance
  • Abstract classes and methods
  • Interfaces
  • Traits as mixins
  • Visibility (public, protected, and private members)
  • Static and constant members


Comprehensive documentation and examples are available on the GNU ease.js website and in its manual.

Bug Reports / Feature Requests

Please direct bug reports and feature requests to or the project page on Savannah.

Why Classical OOP in JavaScript?

GNU ease.js was created (historically) for a number of reasons:

  • To "ease" object-oriented developers into JavaScript by providing a familiar environment.
  • To provide the maintenance and development benefits of classical OOP.
  • To provide features not included in the language, such as proper encapsulation through private/protected members, interfaces, traits, intuitive inheritance, and other conveniences.
  • To encapsulate the hacks commonly used to perform the above tasks.

Many JS purists believe that classical object-oriented programming should be left out of JavaScript and that one should stick strictly to prototypal development. While the two are related (they are both object-oriented), they can be applied to different problem domains in order to achieve results that are more natural or intuitive to developers; GNU ease.js works seamlessly with existing prototypes, allowing the developer to choose whether or not they want to use "classes".


GNU ease.js is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

N.B.: Versions prior to 0.2.0 were released under the LGPLv3+. Upon becoming a GNU project, it was relicensed under the GPLv3+ to help the FSF stand strong in its fight against proprietary JavaScript. For more information, please see the NEWS file (which can be built with make NEWS).

Something went wrong with that request. Please try again.