The goog.object Namespace

.add(obj, key, val)

Adds a key-value pair to the object. Throws an exception if the key is already in use. Use set if you want to change an existing pair.

obj {Object}
The object to which to add the key-value pair.
key {string}
The key to add.
val {*}
The value to add.

.clear(obj)

Removes all key value pairs from the object/map/hash.

obj {Object}
The object to clear.

.clone(obj)

Does a flat clone of the object.

obj {Object}
Object to clone.
returns {!Object}
Clone of the input object.

.contains(obj, val)

Whether the object/hash/map contains the given object as a value. An alias for goog.object.containsValue(obj, val).

obj {Object}
The object in which to look for val.
val {*}
The object for which to check.
returns {boolean}
true if val is present.

.containsKey(obj, key)

Whether the object/map/hash contains the given key.

obj {Object}
The object in which to look for key.
key {*}
The key for which to check.
returns {boolean}
true If the map contains the key.

.containsValue(obj, val)

Whether the object/map/hash contains the given value. This is O(n).

obj {Object}
The object in which to look for val.
val {*}
The value for which to check.
returns {boolean}
true If the map contains the value.

.create(var_args)

Creates a new object built from the key-value pairs provided as arguments.

var_args {...*}
If only one argument is provided and it is an array then this is used as the arguments, otherwise even arguments are used as the property names and odd arguments are used as the property values.
returns {!Object}
The new object.
@throws
{Error} If there are uneven number of arguments or there is only one non array argument.

.createImmutableView(obj)

Creates an immutable view of the underlying object, if the browser supports immutable objects. In default mode, writes to this view will fail silently. In strict mode, they will throw an error.

obj {!Object}
An object.
returns {!Object}
An immutable view of that object, or the original object if this browser does not support immutables.

.createSet(var_args)

Creates a new object where the property names come from the arguments but the value is always set to true

var_args {...*}
If only one argument is provided and it is an array then this is used as the arguments, otherwise the arguments are used as the property names.
returns {!Object}
The new object.

.every(obj, f, opt_obj)

Calls a function for each element in an object/map/hash. If all calls return true, returns true. If any call returns false, returns false at this point and does not continue to check the remaining elements.

obj {Object}
The object to check.
f {Function}
The function to call for every element. This function takes 3 arguments (the element, the index and the object) and should return a boolean.
opt_obj {Object=}
This is used as the 'this' object within f.
returns {boolean}
false if any element fails the test.

.extend(target, var_args)

Extends an object with another object. This operates 'in-place'; it does not create a new Object. Example: var o = {}; goog.object.extend(o, {a: 0, b: 1}); o; // {a: 0, b: 1} goog.object.extend(o, {c: 2}); o; // {a: 0, b: 1, c: 2}

target {Object}
The object to modify.
var_args {...Object}
The objects from which values will be copied.

.filter(obj, f, opt_obj)

Calls a function for each element in an object/map/hash. If that call returns true, adds the element to a new object.

obj {Object}
The object over which to iterate.
f {Function}
The function to call for every element. This function takes 3 arguments (the element, the index and the object) and should return a boolean. If the return value is true the element is added to the result object. If it is false the element is not included.
opt_obj {Object=}
This is used as the 'this' object within f.
returns {!Object}
a new object in which only elements that passed the test are present.

.findKey(obj, f, opt_this)

Searches an object for an element that satisfies the given condition and returns its key.

obj {Object}
The object to search in.
f {function(*, string, Object): boolean}
The function to call for every element. Takes 3 arguments (the value, the key and the object) and should return a boolean.
opt_this {Object=}
An optional "this" context for the function.
returns {string|undefined}
The key of an element for which the function returns true or undefined if no such element is found.

.findValue(obj, f, opt_this)

Searches an object for an element that satisfies the given condition and returns its value.

obj {Object}
The object to search in.
f {function(*, string, Object): boolean}
The function to call for every element. Takes 3 arguments (the value, the key and the object) and should return a boolean.
opt_this {Object=}
An optional "this" context for the function.
returns {*}
The value of an element for which the function returns true or undefined if no such element is found.

.forEach(obj, f, opt_obj)

Calls a function for each element in an object/map/hash.

obj {Object}
The object over which to iterate.
f {Function}
The function to call for every element. This function takes 3 arguments (the element, the index and the object) and the return value is irrelevant.
opt_obj {Object=}
This is used as the 'this' object within f.

.get(obj, key, opt_val)

Returns the value for the given key.

obj {Object}
The object from which to get the value.
key {string}
The key for which to get the value.
opt_val {*=}
The value to return if no item is found for the given key (default is undefined).
returns {*}
The value for the given key.

.getAnyKey(obj)

Returns one key from the object map, if any exists. For map literals the returned key will be the first one in most of the browsers (a know exception is Konqueror).

obj {Object}
The object to pick a key from.
returns {string|undefined}
The key or undefined if the object is empty.

.getAnyValue(obj)

Returns one value from the object map, if any exists. For map literals the returned value will be the first one in most of the browsers (a know exception is Konqueror).

obj {Object}
The object to pick a value from.
returns {*}
The value or undefined if the object is empty.

.getCount(obj)

Returns the number of key-value pairs in the object map.

obj {Object}
The object for which to get the number of key-value pairs.
returns {number}
The number of key-value pairs in the object map.

.getKeys(obj)

Returns the keys of the object/map/hash.

obj {Object}
The object from which to get the keys.
returns {!Array.<string>}
Array of property keys.

.getValueByKeys(obj, var_args)

Get a value from an object multiple levels deep. This is useful for pulling values from deeply nested objects, such as JSON responses. Example usage: getValueByKeys(jsonObj, 'foo', 'entries', 3)

obj {!Object}
An object to get the value from. Can be array-like.
var_args {...(string|number|!Array.<number|string>)}
A number of keys (as strings, or nubmers, for array-like objects). Can also be specified as a single array of keys.
returns {*}
The resulting value. If, at any point, the value for a key is undefined, returns undefined.

.getValues(obj)

Returns the values of the object/map/hash.

obj {Object}
The object from which to get the values.
returns {!Array}
The values in the object/map/hash.

.isEmpty(obj)

Whether the object/map/hash is empty.

obj {Object}
The object to test.
returns {boolean}
true if obj is empty.

.isImmutableView(obj)

obj {!Object}
An object.
returns {boolean}
Whether this is an immutable view of the object.

.map(obj, f, opt_obj)

For every element in an object/map/hash calls a function and inserts the result into a new object.

obj {Object}
The object over which to iterate.
f {Function}
The function to call for every element. This function takes 3 arguments (the element, the index and the object) and should return something. The result will be inserted into a new object.
opt_obj {Object=}
This is used as the 'this' object within f.
returns {!Object}
a new object with the results from f.

.remove(obj, key)

Removes a key-value pair based on the key.

obj {Object}
The object from which to remove the key.
key {*}
The key to remove.
returns {boolean}
Whether an element was removed.

.set(obj, key, value)

Adds a key-value pair to the object/map/hash.

obj {Object}
The object to which to add the key-value pair.
key {string}
The key to add.
value {*}
The value to add.

.setIfUndefined(obj, key, value)

Adds a key-value pair to the object/map/hash if it doesn't exist yet.

obj {Object}
The object to which to add the key-value pair.
key {string}
The key to add.
value {*}
The value to add if the key wasn't present.
returns {*}
The value of the entry at the end of the function.

.some(obj, f, opt_obj)

Calls a function for each element in an object/map/hash. If any call returns true, returns true (without checking the rest). If all calls return false, returns false.

obj {Object}
The object to check.
f {Function}
The function to call for every element. This function takes 3 arguments (the element, the index and the object) and should return a boolean.
opt_obj {Object=}
This is used as the 'this' object within f.
returns {boolean}
true if any element passes the test.

.transpose(obj)

Returns a new object in which all the keys and values are interchanged (keys become values and values become keys). If multiple keys map to the same value, the chosen transposed value is implementation-dependent.

obj {Object}
The object to transpose.
returns {!Object}
The transposed object.

.unsafeClone(obj)

Clones a value. The input may be an Object, Array, or basic type. Objects and arrays will be cloned recursively. WARNINGS: goog.object.unsafeClone does not detect reference loops. Objects that refer to themselves will cause infinite recursion. goog.object.unsafeClone is unaware of unique identifiers, and copies UIDs created by getUid into cloned results.

obj {*}
The value to clone.
returns {*}
A clone of the input value.