aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/Angular.js11
-rw-r--r--test/AngularSpec.js7
2 files changed, 12 insertions, 6 deletions
diff --git a/src/Angular.js b/src/Angular.js
index efb11526..ad281504 100644
--- a/src/Angular.js
+++ b/src/Angular.js
@@ -87,22 +87,21 @@ if (isNaN(msie)) {
/**
* @private
* @param {*} obj
- * @return {boolean} Returns true if `obj` is an array or array-like object (NodeList, Arguments, ...)
+ * @return {boolean} Returns true if `obj` is an array or array-like object (NodeList, Arguments, String ...)
*/
function isArrayLike(obj) {
if (obj == null || isWindow(obj)) {
return false;
}
-
+
var length = obj.length;
if (obj.nodeType === 1 && length) {
return true;
}
- return isArray(obj) || !isFunction(obj) && (
- length === 0 || typeof length === "number" && length > 0 && (length - 1) in obj
- );
+ return isString(obj) || isArray(obj) || length === 0 ||
+ typeof length === 'number' && length > 0 && (length - 1) in obj;
}
/**
@@ -599,7 +598,7 @@ function isLeafNode (node) {
* * If a destination is provided, all of its elements (for array) or properties (for objects)
* are deleted and then all elements/properties from the source are copied to it.
* * If `source` is not an object or array (inc. `null` and `undefined`), `source` is returned.
- * * If `source` is identical to 'destination' an exception will be thrown.
+ * * If `source` is identical to 'destination' an exception will be thrown.
*
* Note: this function is used to augment the Object type in Angular expressions. See
* {@link ng.$filter} for more information about Angular arrays.
diff --git a/test/AngularSpec.js b/test/AngularSpec.js
index f6796496..62ea31d9 100644
--- a/test/AngularSpec.js
+++ b/test/AngularSpec.js
@@ -461,6 +461,13 @@ describe('angular', function() {
expect(log).toEqual(['0:a', '1:b', '2:c']);
});
+ it('should handle string values like arrays', function() {
+ var log = [];
+
+ forEach('bar', function(value, key) { log.push(key + ':' + value)});
+ expect(log).toEqual(['0:b', '1:a', '2:r']);
+ });
+
it('should handle objects with length property as objects', function() {
var obj = {