Pass object to javascript function

252,201

Solution 1

The "braces" are making an object literal, i.e. they create an object. It is one argument.

Example:

function someFunc(arg) {
    alert(arg.foo);
    alert(arg.bar);
}

someFunc({foo: "This", bar: "works!"});

the object can be created beforehand as well:

var someObject = {
    foo: "This", 
    bar: "works!"
};

someFunc(someObject);

I recommend to read the MDN JavaScript Guide - Working with Objects.

Solution 2

function myFunction(arg) {
    alert(arg.var1 + ' ' + arg.var2 + ' ' + arg.var3);
}

myFunction ({ var1: "Option 1", var2: "Option 2", var3: "Option 3" });

Solution 3

Answering normajeans' question about setting default value. Create a defaults object with same properties and merge with the arguments object

If using ES6:

    function yourFunction(args){
        let defaults = {opt1: true, opt2: 'something'};
        let params = {...defaults, ...args}; // right-most object overwrites 
        console.log(params.opt1);
    }

Older Browsers using Object.assign(target, source):

    function yourFunction(args){
        var defaults = {opt1: true, opt2: 'something'};
        var params = Object.assign(defaults, args) // args overwrites as it is source
        console.log(params.opt1);
    }
Share:
252,201
Connor Deckers
Author by

Connor Deckers

Connor is a Software Developer specialising in Javascript, having developed several in-house toolings and projects. These include a major Chrome browser extension that augments our internal LMS, and several supporting toolsets for in-house use.

Updated on July 08, 2022

Comments

  • Connor Deckers
    Connor Deckers almost 2 years

    I have recently been messing around with jQuery on my website, and I have a fairly limited knowledge of Javascript. I am beginning to like the jQuery ability to pass variables to a jQuery function inside the curly braces, like so:

    $(somediv).animate({thisisone: 1, thisistwo: 2}, thisisavar);
    

    What I was wondering is how I can write a Javascript function that I can pass items to inside the curly braces? I know you can write functions like this:

    function someName(var1, var2, var3...) {
    
    }
    

    but that doesn't support the braces? I also know that you can add no arguments and do this:

    function accident() {
        for( var i = 0; i < arguments.length; i++ ) {
            alert("This accident was caused by " + arguments[i]);
        }
    }
    accident("me","a car","alcohol","a tree that had no right to be in the path of my driving");
    

    but I also want to pass outside variables instead of just a whole line of strings, if that makes sense?

    Basically, I want a function that I can pass variables to, like so:

    function myFunction(neededcodehere){
        //Some code here...
    }
    
    myFunction (var1, {"Option 1", "Option 2", "Option 3"}, anothervar);