back

Log clear

For Internet Explorer the second arg of Function.apply()
must be either Array or truly undefined

Whereas Firefox and Chrome (webkit) accepts undefined as value, and null.

Code

var o1 = { func : function(key, value) { 
        if(key !== undefined) {
            this[key] = value;
            log("set: " + key + "=" + this[key]);
        }
        else {  log("did nothing");  }
    }
},
o2 = {},
doApply = function() {
    o1.func.apply(o2, ["someKey", "someValue"]);
    try {  o1.func.apply(o2, []);  }
    catch(er) {  log("failed when second arg empty array");  }
    try {  o1.func.apply(o2);  }
    catch(er) {  log("failed when no second arg at all (truly undefined)");  }
    try {  o1.func.apply(o2, undefined);  }
    catch(er) {  log("failed when second arg undefined (undefined as value)");  }
    try {  o1.func.apply(o2, null);  }
    catch(er) {  log("failed when second arg null");  }
    try {  o1.func.apply(o2, 0);  }
    catch(er) {  log("failed when second arg zero");  }
};