0

Can I put similar methods in an associative aray like this?

var function_hold = {   
  function1: function(){}
  function2: function (){}
 };

If not,

How do I group similar methods?

1
  • 1
    Yes, though strictly speaking it's a stretch to call JavaScript objects "associative arrays". (The property namespace of an object can be "polluted" somewhat through prototypal inheritance effects.) Commented Nov 7, 2011 at 22:38

4 Answers 4

1

Similarly as you would with any other object-oriented programming language, you group functionality in objects. This works in JavaScript as well.

Your code actually creates an object. Alternatively you can use JavaScript's prototype mechanism.

var Person = function(firstname, surname){
    this.firstname = firstname;
    this.surname = surname;
}

Person.prototype.getFullName = function(){
    return this.firstname + " " + this.surname;
}

You then call it like

var tom = new Person("Tom", "Jackwood");
tom.getFullName();
Sign up to request clarification or add additional context in comments.

Comments

1

Yes thats possible and works fine.

Best Practice syntax would be the Module Pattern

var outerNamespace = {};

(function(ns) {
   // ns is the local name of the object
   ns.function1 = function() {}
   ns.function2 = function() {}

  //self executing anonymous function
} (outerNamespace));

2 Comments

Yes it is, whats the question?
They can be used like classes in other OO-Languages. They simply give you a namespace to operate in.
0

Yeah, that should would just fine.

Comments

0

Yes, that will work fine. You can call the functions with function_hold.function1().

Note that normally you'll want to associate data with the functions as well:

var function_hold = {
    x: 0,
    function1: function(){
        this.x++;
    }
    function2: function(){
        alert(this.x);
    }
};

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.