7

In the code:

slider.init({
 foo: "bar"
});

var slider={
 init:function(data){
 }
}

If I use data.foo, I will get "bar".

Supposing I have an optional variable called fish which can be included in the JSON variable. If I reference data.fish, I will be told that it is undefined or an error will be thrown or something. Is there a way that I can assign a default value to fish so that when I request data.fish, even though it is not set in the parameter, I will get a default value?

1 Answer 1

14

You can use the or operator to assign default values in case the aren't defined, for example:

var slider = {
 init:function(data){
   var fish = data.fish || "default value";
 }
}

Or you can make an "extend" function, to merge two objects, similar to the jQuery extend function:

function extend (obj1, obj2) { 
  var result = obj1, val;
  for (val in obj2) {
    if (obj2.hasOwnProperty(val)) {
      result[val] = obj2[val];
    }
  }
return result;
}

var defaults = {val1: 1, val3: 3, fish: 'fish'};
extend(defaults, {val2: 2}); // returns Object val1=1 val3=3 fish=fish val2=2
Sign up to request clarification or add additional context in comments.

2 Comments

This is very good concept, I had no idea that you could do this, thanks.
lol, thanks - I was thinking about something like that but just couldn't put my finger on it - I also thought that it might throw errors because data.fish would be null and it wouldn't want to be compared

Your Answer

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

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.