Object Class
Adds utilities to the YUI instance for working with objects.
Methods
()
-
obj
Returns a new object that uses obj as its prototype. This method wraps the
native ES5 Object.create()
method if available, but doesn't currently
pass through Object.create()
's second argument (properties) in order to
ensure compatibility with older browsers.
Parameters:
-
obj
ObjectPrototype object.
Returns:
New object using obj as its prototype.
each
-
obj
-
fn
-
[thisObj]
-
[proto=false]
Executes a function on each enumerable property in obj. The function receives the value, the key, and the object itself as parameters (in that order).
By default, only properties owned by obj are enumerated. To include
prototype properties, set the proto parameter to true
.
Parameters:
-
obj
ObjectObject to enumerate.
-
fn
FunctionFunction to execute on each enumerable property.
-
value
MixedValue of the current property.
-
key
StringKey of the current property.
-
obj
ObjectObject being enumerated.
-
-
[thisObj]
Object optionalthis
object to use when calling fn. -
[proto=false]
Boolean optionalInclude prototype properties.
Returns:
the YUI instance.
getValue
-
o
-
path
Retrieves the sub value at the provided path, from the value object provided.
Parameters:
-
o
ObjectThe object from which to extract the property value.
-
path
ArrayA path array, specifying the object traversal path from which to obtain the sub value.
Returns:
The value stored in the path, undefined if not found, undefined if the source is not an object. Returns the source object if an empty path is provided.
hasKey
-
obj
-
key
Alias for owns()
.
Parameters:
-
obj
ObjectObject to test.
-
key
StringProperty name to look for.
Returns:
true
if key exists on obj, false
otherwise.
hasValue
-
obj
-
value
Returns true
if the object owns an enumerable property with the specified
value.
Parameters:
-
obj
ObjectAn object.
-
value
AnyThe value to search for.
Returns:
true
if obj contains value, false
otherwise.
isEmpty
-
obj
Returns true
if the object has no enumerable properties of its own.
Parameters:
-
obj
ObjectAn object.
Returns:
true
if the object is empty.
keys
-
obj
Returns an array containing the object's enumerable keys. Does not include prototype keys or non-enumerable keys.
Note that keys are returned in enumeration order (that is, in the same order
that they would be enumerated by a for-in
loop), which may not be the same
as the order in which they were defined.
This method is an alias for the native ES5 Object.keys()
method if
available and non-buggy. The Opera 11.50 and Android 2.3.x versions of
Object.keys()
have an inconsistency as they consider prototype
to be
enumerable, so a non-native shim is used to rectify the difference.
Parameters:
-
obj
ObjectAn object.
Returns:
Array of keys.
Example:
Y.Object.keys({a: 'foo', b: 'bar', c: 'baz'});
// => ['a', 'b', 'c']
owns
-
obj
-
key
Returns true
if key exists on obj, false
if key doesn't exist or
exists only on obj's prototype. This is essentially a safer version of
obj.hasOwnProperty()
.
Parameters:
-
obj
ObjectObject to test.
-
key
StringProperty name to look for.
Returns:
true
if key exists on obj, false
otherwise.
setValue
-
o
-
path
-
val
Sets the sub-attribute value at the provided path on the value object. Returns the modified value object, or undefined if the path is invalid.
Parameters:
-
o
ObjectThe object on which to set the sub value.
-
path
ArrayA path array, specifying the object traversal path at which to set the sub value.
-
val
AnyThe new value for the sub-attribute.
Returns:
The modified object, with the new sub value set, or undefined, if the path was invalid.
size
-
obj
Returns the number of enumerable keys owned by an object.
Parameters:
-
obj
ObjectAn object.
Returns:
The object's size.
some
-
obj
-
fn
-
[thisObj]
-
[proto=false]
Executes a function on each enumerable property in obj, but halts if the function returns a truthy value. The function receives the value, the key, and the object itself as paramters (in that order).
By default, only properties owned by obj are enumerated. To include
prototype properties, set the proto parameter to true
.
Parameters:
-
obj
ObjectObject to enumerate.
-
fn
FunctionFunction to execute on each enumerable property.
-
value
MixedValue of the current property.
-
key
StringKey of the current property.
-
obj
ObjectObject being enumerated.
-
-
[thisObj]
Object optionalthis
object to use when calling fn. -
[proto=false]
Boolean optionalInclude prototype properties.
Returns:
true
if any execution of fn returns a truthy value,
false
otherwise.
values
-
obj
Returns an array containing the values of the object's enumerable keys.
Note that values are returned in enumeration order (that is, in the same
order that they would be enumerated by a for-in
loop), which may not be the
same as the order in which they were defined.
Parameters:
-
obj
ObjectAn object.
Returns:
Array of values.
Example:
Y.Object.values({a: 'foo', b: 'bar', c: 'baz'});
// => ['foo', 'bar', 'baz']
Properties
_forceEnum
String
protected
static
Property names that IE doesn't enumerate in for..in loops, even when they
should be enumerable. When _hasEnumBug
is true
, it's necessary to
manually enumerate these properties.
_hasEnumBug
Boolean
protected
static
true
if this browser has the JScript enumeration bug that prevents
enumeration of the properties named in the _forceEnum
array, false
otherwise.
See:
_hasProtoEnumBug
Boolean
protected
static
true
if this browser incorrectly considers the prototype
property of
functions to be enumerable. Currently known to affect Opera 11.50 and Android 2.3.x.