Skip to content

Instantly share code, notes, and snippets.

@creationix
Created August 12, 2010 00:15
Show Gist options
  • Save creationix/520067 to your computer and use it in GitHub Desktop.
Save creationix/520067 to your computer and use it in GitHub Desktop.
An experience in making an object library.
Object.defineProperty(Object.prototype, "extend", {value: function (obj) {
obj.__proto__ = this;
return obj;
}});
Object.defineProperty(Object.prototype, "new", {value: function () {
var obj = Object.create(this);
if (obj.initialize) obj.initialize.apply(obj, arguments);
return obj;
}});
var Rectangle = {
initialize: function initialize(width, height) {
this.width = width;
this.height = height;
},
get area() {
return this.width * this.height;
}
};
var Square = Rectangle.extend({
initialize: function initialize(side) {
this.width = side;
this.height = side;
}
});
var rect = Rectangle.new(10, 20);
console.log(rect.area);
var square = Square.new(15);
console.log(square.area);
@akidee
Copy link

akidee commented Aug 12, 2010

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment