zoukankan      html  css  js  c++  java
  • angular.js中提供的基础方法

    angular.bind

    angular.callbacks

    angular.equals

    /*
     *Determines if two objects or two values are equivalent. Supports value types, regular
     * expressions, arrays and objects.
    
     * Two objects or values are considered equivalent if at least one of the following is true:
     *
     * * Both objects or values pass `===` comparison.
     * * Both objects or values are of the same type and all of their properties are equal by
     *   comparing them with `angular.equals`.
     * * Both values are NaN. (In JavaScript, NaN == NaN => false. But we consider two NaN as equal)
     * * Both values represent the same regular expression (In JavaScript,
     *   /abc/ == /abc/ => false. But we consider two regular expressions as equal when their textual
     *   representation matches).
     *
     * During a property comparison, properties of `function` type and properties with names
     * that begin with `$` are ignored.
     *
     * Scope and DOMWindow objects are being compared only by identify (`===`).
    */

    angular.copy

    /*
     *Creates a deep copy of `source`, which should be an object or an array.
     * If no destination is supplied, a copy of the object or array is created.
     * * If a destination is provided, all of its elements (for arrays) 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.
     *
     * @param {*} source The source that will be used to make a copy.
     *                   Can be any type, including primitives, `null`, and `undefined`.
     * @param {(Object|Array)=} destination Destination into which the source is copied. If
     *     provided, must be of the same type as `source`.
     * @returns {*} The copy or updated `destination`, if `destination` was specified.
    */ 

    angular.forEach

    /**
     * @description
     * Invokes the `iterator` function once for each item in `obj` collection, which can be either an
     * object or an array. The `iterator` function is invoked with `iterator(value, key, obj)`, where `value`
     * is the value of an object property or an array element, `key` is the object property key or
     * array element index and obj is the `obj` itself. Specifying a `context` for the function is optional.
     *
     * It is worth noting that `.forEach` does not iterate over inherited properties because it filters
     * using the `hasOwnProperty` method.
     *
     * Unlike ES262's
     * [Array.prototype.forEach](http://www.ecma-international.org/ecma-262/5.1/#sec-15.4.4.18),
     * providing 'undefined' or 'null' values for `obj` will not throw a TypeError, but rather just
     * return the value provided.
     *
       ```js
         var values = {name: 'misko', gender: 'male'};
         var log = [];
         angular.forEach(values, function(value, key) {
           this.push(key + ': ' + value);
         }, log);
         expect(log).toEqual(['name: misko', 'gender: male']);
       ```
     *
     * @param {Object|Array} obj Object to iterate over.
     * @param {Function} iterator Iterator function.
     * @param {Object=} context Object to become context (`this`) for the iterator function.
     * @returns {Object|Array} Reference to `obj`.
     */
    function forEach(obj, iterator, context) {
      var key, length;
      if (obj) {
        if (isFunction(obj)) {
          for (key in obj) {
            // Need to check if hasOwnProperty exists,
            // as on IE8 the result of querySelectorAll is an object without a hasOwnProperty function
            if (key != 'prototype' && key != 'length' && key != 'name' && (!obj.hasOwnProperty || obj.hasOwnProperty(key))) {
              iterator.call(context, obj[key], key, obj);
            }
          }
        } else if (isArray(obj) || isArrayLike(obj)) {
          var isPrimitive = typeof obj !== 'object';
          for (key = 0, length = obj.length; key < length; key++) {
            if (isPrimitive || key in obj) {
              iterator.call(context, obj[key], key, obj);
            }
          }
        } else if (obj.forEach && obj.forEach !== forEach) {
            obj.forEach(iterator, context, obj);
        } else if (isBlankObject(obj)) {
          // createMap() fast path --- Safe to avoid hasOwnProperty check because prototype chain is empty
          for (key in obj) {
            iterator.call(context, obj[key], key, obj);
          }
        } else if (typeof obj.hasOwnProperty === 'function') {
          // Slow path for objects inheriting Object.prototype, hasOwnProperty check needed
          for (key in obj) {
            if (obj.hasOwnProperty(key)) {
              iterator.call(context, obj[key], key, obj);
            }
          }
        } else {
          // Slow path for objects which do not have a method `hasOwnProperty`
          for (key in obj) {
            if (hasOwnProperty.call(obj, key)) {
              iterator.call(context, obj[key], key, obj);
            }
          }
        }
      }
      return obj;
    }

    angular.fromJson

    function fromJson(json) {
      return isString(json) ? JSON.parse(json) : json;
    }

    angular.toJson

    function toJson(obj, pretty) {
      if (isUndefined(obj)) return undefined;
      if (!isNumber(pretty)) {
        pretty = pretty ? 2 : null;
      }
      return JSON.stringify(obj, toJsonReplacer, pretty);
    }

    angular.noop

    /**
     * @ngdoc function
     * @name angular.noop
     * @module ng
     * @kind function
     *
     * @description
     * A function that performs no operations. This function can be useful when writing code in the
     * functional style.
       ```js
         function foo(callback) {
           var result = calculateResult();
           (callback || angular.noop)(result);
         }
       ```
     */
    function noop() {}
    noop.$inject = [];

    angular.isFunction

    function isFunction(value) {
         return typeof value === 'function';
    }

    angular.isArray

    var isArray = Array.isArray;

    angular.isDate

    function isDate(value) {
      return toString.call(value) === '[object Date]';
    }

    angular.isObject

    function isObject(value) {
      return value !== null && typeof value === 'object';
    }

    angular.isRegExp

    function isRegExp(value) {
      return toString.call(value) === '[object RegExp]';
    }

    angular.isString

    function isString(value) {
       return typeof value === 'string';
    }
    

    angular.isNumber

    function isNumber(value) {
       return typeof value === 'number';
    }

    angular.isBoolean

    function isBoolean(value) {
      return typeof value === 'boolean';
    }

    angular.isUndefined

    function isUndefined(value) {
           return typeof value === 'undefined';
    }

    angular.isDefined

    function isDefined(value) {
         return typeof value !== 'undefined';
    }

    angular.isElement

    // Determines if a reference is a DOM element (or wrapped jQuery element).
    function isElement(node) {
      return !!(node &&
        (node.nodeName  // we are a direct element
        || (node.prop && node.attr && node.find)));  // we have an on and find method part of jQuery API
    }

    angular.uppercase

    var uppercase = function(string) {
         return isString(string) ? string.toUpperCase() : string;
    };

    angualr.lowercase

    var lowercase = function(string) {
        return isString(string) ? string.toLowerCase() : string;
    };
    // 判断空格
    isWhitespace: function(ch) {
        // IE treats non-breaking space as u00A0
        return (ch === ' ' || ch === '
    ' || ch === '	' ||
                ch === '
    ' || ch === 'v' || ch === 'u00A0');
      },
    function toInt(str) {
    return parseInt(str, 10);
    }
     
  • 相关阅读:
    KMP
    KMP算法的Next数组详解
    从头到尾彻底理解KMP
    通信协议:HTTP、TCP、UDP
    十大Intellij IDEA快捷键
    Java连接oracle数据库的两种常用方法
    Oracle 数据类型
    Oracle 数据库、实例、用户、表空间、表之间的关系
    Android中的Handler的机制与用法详解
    在Android开发中,定时执行任务的3种实现方法
  • 原文地址:https://www.cnblogs.com/xuepei/p/9110516.html
Copyright © 2011-2022 走看看