How do I create a model of a function?

Friedrich

I want to create a model of a class, let's say

var car = function(){
  var color;
  this.setColor = function(clr){
    color = clr;
  }
}

Now I want some more classes, for example volvo(). But I also want all the stuff, car() has, to use it in volvo(), like this

var volvo = function(){
  ...probably some code here
  this.getColor = function(){
    return color;
  }
}

How do I do that?

ambodi

What you are trying to achieve is called inheritance and since JavaScript is not class-based like Java, C# and other languages and it is based on prototypes, it is not that easy to achieve.

There are many ways of achieving it:

One way is to use frameworks such as Backbone.js, AngularJS or Ember.js. Then in your model class, basically you can use the Extend keyword and then get the inheritance out of the box.

Another way is that you include the following code, wrote by John Resig (creator of jQuery) into your application:

    /* Simple JavaScript Inheritance
     * By John Resig http://ejohn.org/
     * MIT Licensed.
     */
     // Inspired by base2 and Prototype
    (function(){
  var initializing = false, fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/;

  // The base Class implementation (does nothing)
  this.Class = function(){};

  // Create a new Class that inherits from this class
  Class.extend = function(prop) {
    var _super = this.prototype;

    // Instantiate a base class (but only create the instance,
    // don't run the init constructor)
    initializing = true;
    var prototype = new this();
    initializing = false;

    // Copy the properties over onto the new prototype
    for (var name in prop) {
      // Check if we're overwriting an existing function
      prototype[name] = typeof prop[name] == "function" &&
        typeof _super[name] == "function" && fnTest.test(prop[name]) ?
        (function(name, fn){
          return function() {
            var tmp = this._super;

            // Add a new ._super() method that is the same method
            // but on the super-class
            this._super = _super[name];

            // The method only need to be bound temporarily, so we
            // remove it when we're done executing
            var ret = fn.apply(this, arguments);
            this._super = tmp;

            return ret;
          };
        })(name, prop[name]) :
        prop[name];
    }

    // The dummy class constructor
    function Class() {
      // All construction is actually done in the init method
      if ( !initializing && this.init )
        this.init.apply(this, arguments);
    }

    // Populate our constructed prototype object
    Class.prototype = prototype;

    // Enforce the constructor to be what we expect
    Class.prototype.constructor = Class;

    // And make this class extendable
    Class.extend = arguments.callee;

    return Class;
  };
})();

After you load this code, you will be able to use it for your problem:

var Car = Class.Extend({
  setColor: function(clr){
    color = clr;
  }
});

var volvo = Car.Extend({
   getColor: function () {
      return color;
   }
});

Read about it in the JavaScript Inheritance by John Resig post. Good luck!

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

How do I create a function with a function in Python?

From Dev

How do I call model function on create event? Laravel-5

From Dev

How do I create a model that "belongsTo" a "hasMany through" join model?

From Dev

How do I create a noexcept function pointer?

From Dev

How do I create a jquery function with callbacks

From Dev

Laravel: How do I create a custom pivot model?

From Dev

How do I create a scope on an associated closure_tree model?

From Dev

How do I create a gain chart in R for a decision tree model?

From Dev

How do I easily create a calculated field in a Django model?

From Dev

How do I create closures for model getter-setter in angular?

From Dev

How do I create an action for a model with specific :id?

From Dev

How do I create an Entity Framework data model?

From Dev

How do I create a model in cakephp3 which is not ORM?

From Dev

How do I create an instance of a model in views.py?

From Dev

How do I create a Rust callback function to pass to a FFI function?

From Dev

how do I create a function within a function to cycle?

From Dev

How do I create a function for separating parts of a function?

From Dev

How do I create a new model, related to an existing model, using STI?

From Dev

How do I create an encrypt and decrypt function in NodeJS?

From Dev

How do I create a named function expressions in CoffeeScript?

From Dev

How do I create a template function for controls of a form?

From Java

How do I create an array of function pointers of different prototypes?

From Dev

How do I dynamically create a named function disregarding the scope?

From Dev

How do I write a function to create a circular version of a list in OCaml?

From Dev

How do I create an alias for a noexcept function pointer?

From Dev

How do I create a packaged_task with a member function?

From Dev

How do I create a function variable with a variable number of arguments?

From Dev

How do i create a dynamic array of function pointers?

From Dev

How do I create a callback function with ctypes in Python?

Related Related

  1. 1

    How do I create a function with a function in Python?

  2. 2

    How do I call model function on create event? Laravel-5

  3. 3

    How do I create a model that "belongsTo" a "hasMany through" join model?

  4. 4

    How do I create a noexcept function pointer?

  5. 5

    How do I create a jquery function with callbacks

  6. 6

    Laravel: How do I create a custom pivot model?

  7. 7

    How do I create a scope on an associated closure_tree model?

  8. 8

    How do I create a gain chart in R for a decision tree model?

  9. 9

    How do I easily create a calculated field in a Django model?

  10. 10

    How do I create closures for model getter-setter in angular?

  11. 11

    How do I create an action for a model with specific :id?

  12. 12

    How do I create an Entity Framework data model?

  13. 13

    How do I create a model in cakephp3 which is not ORM?

  14. 14

    How do I create an instance of a model in views.py?

  15. 15

    How do I create a Rust callback function to pass to a FFI function?

  16. 16

    how do I create a function within a function to cycle?

  17. 17

    How do I create a function for separating parts of a function?

  18. 18

    How do I create a new model, related to an existing model, using STI?

  19. 19

    How do I create an encrypt and decrypt function in NodeJS?

  20. 20

    How do I create a named function expressions in CoffeeScript?

  21. 21

    How do I create a template function for controls of a form?

  22. 22

    How do I create an array of function pointers of different prototypes?

  23. 23

    How do I dynamically create a named function disregarding the scope?

  24. 24

    How do I write a function to create a circular version of a list in OCaml?

  25. 25

    How do I create an alias for a noexcept function pointer?

  26. 26

    How do I create a packaged_task with a member function?

  27. 27

    How do I create a function variable with a variable number of arguments?

  28. 28

    How do i create a dynamic array of function pointers?

  29. 29

    How do I create a callback function with ctypes in Python?

HotTag

Archive