Guest User

Untitled

a guest
May 26th, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.89 KB | None | 0 0
  1. var sys = require("sys");
  2.  
  3. var extend = function extend (another) {
  4. var prototype = this.__proto__;
  5. this.__proto__ = another;
  6. another.__proto__ = prototype;
  7. return this;
  8. };
  9.  
  10. Object.defineProperty(Object.prototype, "extend", {value: extend });
  11.  
  12. var Model = new Function();
  13. Model.prototype = {
  14. saySomething: function() {
  15. sys.puts("Yes, I am a model!");
  16. }
  17. }
  18.  
  19. var NotModel = new Function();
  20. NotModel.prototype = {
  21. saySomething: function() {
  22. sys.puts("No, I am not a model!");
  23. }
  24. }
  25.  
  26. var a = new Model();
  27. var b = new NotModel();
  28.  
  29. sys.puts("Before extending:");
  30. sys.print("a: "); a.saySomething(); // Yes, I am a model!
  31. sys.print("b: "); b.saySomething(); // No, I am not a model!
  32.  
  33. var SomeMixin = {};
  34.  
  35. a.extend(SomeMixin);
  36. b.extend(SomeMixin);
  37.  
  38. sys.puts("After extending:");
  39. sys.print("a: "); a.saySomething(); // No, I am not a model!
  40. sys.print("b: "); b.saySomething(); // No, I am not a model!
Add Comment
Please, Sign In to add comment