Skip to content

Instantly share code, notes, and snippets.

@zaach
Created August 14, 2011 03:46
Show Gist options
  • Save zaach/1144539 to your computer and use it in GitHub Desktop.
Save zaach/1144539 to your computer and use it in GitHub Desktop.
An example from http://yehudakatz.com/2011/08/ adapted to use the <| operator
var fromPrototype = function(prototype, object) {
var newObject = Object.create(prototype);
for (var prop in object) {
if (object.hasOwnProperty(prop)) {
newObject[prop] = object[prop];
}
}
};
var person = {
toString: function() {
return this.firstName + ' ' + this.lastName;
}
};
var man = fromPrototype(person, {
sex: "male"
});
var jeremy = fromPrototype(man, {
firstName: "Jeremy",
lastName: "Ashkenas"
});
jeremy.sex // "male"
jeremy.toString() // "Jeremy Ashkenas"
var person = {
toString: function() {
return this.firstName + ' ' + this.lastName;
}
};
var man = person <| {
sex: "male"
};
var jeremy = man <| {
firstName: "Jeremy",
lastName: "Ashkenas"
};
jeremy.sex // "male"
jeremy.toString() // "Jeremy Ashkenas"
// This version demonstrates a reference to super
var person = {
toString: function() {
return this.firstName + ' ' + this.lastName;
}
};
var man = person <| {
sex: "male",
toString: function() {
return "Mr. " + super.toString();
}
};
var jeremy = man <| {
firstName: "Jeremy",
lastName: "Ashkenas"
};
jeremy.sex // "male"
jeremy.toString() // "Mr. Jeremy Ashkenas"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment