1
0
Fork 0
Classical object-oriented framework for JavaScript [unmaintained] https://gnu.org/software/easejs
 
 
 
 
 
 
Go to file
Mike Gerwitz c2ca8b6d68 Extract interface-related trait tests into own case
Trying to make things a little more organized (and easier to grok) now that
interfaces are not the only means of providing abstract methods to traits
without explicit definition within a trait.
2015-05-12 00:30:32 -04:00
doc Documentation for `super` method reference 2014-07-28 00:00:58 -04:00
lib Forbid trait extending of final classes 2015-05-12 00:22:47 -04:00
test Extract interface-related trait tests into own case 2015-05-12 00:30:32 -04:00
tools tools/copyright ignore `.|..' 2015-05-06 22:36:52 -04:00
.gitignore Missing /doc/Makefile{,.in} ignore added 2014-07-27 23:30:32 -04:00
.mailmap .mailmap updated with mtg@gnu.org 2015-05-11 23:11:25 -04:00
COPYING Split COPYING into two separate files: COPYING and COPYING.LGPL 2012-06-13 22:27:48 -04:00
Makefile.am `clean` target now cleans version file 2014-07-28 00:08:06 -04:00
README [copyright] Copyright assignment to the FSF 2014-04-09 19:05:07 -04:00
README.hacking Added beginning of README.hacking 2011-09-02 22:24:16 -04:00
README.md Added GNU to ease.js license notice in README.md 2014-04-09 19:10:20 -04:00
README.todo README TODOs using Org mode 2014-12-19 22:25:18 -05:00
README.traits README TODOs using Org mode 2014-12-19 22:25:18 -05:00
configure.ac AC_INIT e-mail changed to bug-easejs@gnu.org 2014-06-11 21:55:53 -04:00
index.js [copyright] Copyright assignment to the FSF 2014-04-09 19:05:07 -04:00
package.json.in package.json syntax correction (oops) 2015-05-10 01:39:12 -04:00

README.md

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

Documentation

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 bug-easejs@gnu.org 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".

License

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).