Skip to content

Instantly share code, notes, and snippets.

@kameko
Last active November 12, 2018 01:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kameko/b37bebfca888284ef7370f8e528a9fdc to your computer and use it in GitHub Desktop.
Save kameko/b37bebfca888284ef7370f8e528a9fdc to your computer and use it in GitHub Desktop.
more OOP
var Project = {};
var newclass = function (args) {
args.public = {};
args.extends = function (classname) {
args.public = classname(args);
args.base = Object.assign({}, args);
return args;
};
return args;
};
Project.classA = function (args) {
var self = newclass(args);
var public = self.public;
public.say_quote = function () {
self.say_name(self.quote);
};
self.say_name = function (str) {
self.say(self.name + " says: " + str);
};
self.say = function (str) {
document.writeln(str);
};
return public;
};
Project.classB = function (args) {
var self = newclass(args).extends(Project.classA);
var public = self.public;
var base = self.base;
public.say_quote = function () {
self.say_name(self.quote + '!');
};
self.say_name = function (str) {
self.say(self.name + " thinks: " + str);
};
self.say = function (str) {
base.say(str);
base.say("also hi");
};
return public;
};
var a1 = Project.classA({name: "bill", quote: "eee"});
a1.say_quote();
var a2 = Project.classA({name: "abe", quote: "aaaaa"});
a2.say_quote();
var a3 = Project.classB({name: "harkinian", quote: "hmm"});
a3.say_quote();
a2.say_quote();
a1.say_quote();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment