diff options
| -rw-r--r-- | src/Angular.js | 11 | ||||
| -rw-r--r-- | test/AngularSpec.js | 7 | 
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 = { | 
