zoukankan      html  css  js  c++  java
  • (三)underscore.js框架Objects类API学习


    keys_.keys(object) 
    Retrieve all the names of the object's properties.

    _.keys({one: 1, two: 2, three: 3});
    => ["one", "two", "three"]

    values_.values(object) 
    Return all of the values of the object's properties.

    _.values({one: 1, two: 2, three: 3});
    => [1, 2, 3]

    pairs_.pairs(object) 
    Convert an object into a list of [key, value] pairs.

    _.pairs({one: 1, two: 2, three: 3});
    => [["one", 1], ["two", 2], ["three", 3]]

    invert_.invert(object) 
    Returns a copy of the object where the keys have become the values and the values the keys. For this to work, all of your object's values should be unique and string serializable.

    _.invert({Moe: "Moses", Larry: "Louis", Curly: "Jerome"});
    => {Moses: "Moe", Louis: "Larry", Jerome: "Curly"};

    functions_.functions(object) Alias: methods 
    Returns a sorted list of the names of every method in an object — that is to say, the name of every function property of the object.

    _.functions(_);
    => ["all", "any", "bind", "bindAll", "clone", "compact", "compose" ...

    extend_.extend(destination, *sources) 
    Copy all of the properties in the source objects over to the destination object, and return the destination object. It's in-order, so the last source will override properties of the same name in previous arguments.

    _.extend({name: 'moe'}, {age: 50});
    => {name: 'moe', age: 50}
    说明:extend函数是直接改动destination參数的。通过以下代码非常easy证明

    var destination = {name: 'moe'};
    var source = {age: 50}
    _.extend(destination, source);
    console.log("extend="+destination.age);//50

    pick_.pick(object, *keys) 
    Return a copy of the object, filtered to only have values for the whitelisted(白名单) keys (or array of valid keys). Alternatively accepts a predicate indicating which keys to pick.

    _.pick({name: 'moe', age: 50, userid: 'moe1'}, 'name', 'age');
    => {name: 'moe', age: 50}
    _.pick({name: 'moe', age: 50, userid: 'moe1'}, function(value, key, object) {
      return _.isNumber(value);
    });
    => {age: 50}

    omit_.omit(object, *keys) 
    Return a copy of the object, filtered to omit the blacklisted(黑名单) keys (or array of keys). Alternatively accepts a predicate indicating which keys to omit.

    _.omit({name: 'moe', age: 50, userid: 'moe1'}, 'userid');
    => {name: 'moe', age: 50}
    _.omit({name: 'moe', age: 50, userid: 'moe1'}, function(value, key, object) {
      return _.isNumber(value);
    });
    => {name: 'moe', userid: 'moe1'}

    defaults_.defaults(object, *defaults) 
    Fill in undefined properties in object with the first value present in the following list ofdefaults objects.

    var iceCream = {flavor: "chocolate"};
    _.defaults(iceCream, {flavor: "vanilla", sprinkles: "lots"});
    => {flavor: "chocolate", sprinkles: "lots"}
    说明:这个函数和extend非常类似,假设destination和source中属性名没有反复。那么2个函数的功能是全然一致的。

    区别在于:当属性名有同名的时候,extend直接用source中的值覆盖掉destination中的值;而defaults则会依据destination中的属性值是否为undefined区别对待。

    var iceCream = {flavor: "chocolate",sprinkles:undefined};
    _.defaults(iceCream, {flavor: "vanilla", sprinkles: "lots"});
    console.log("iceCream=" + iceCream.flavor);//chocolate
    console.log("sprinkles=" + iceCream.sprinkles);//lots

    clone_.clone(object) 
    Create a shallow-copied(浅拷贝) clone of the object. Any nested objects or arrays will be copied by reference, not duplicated.

    _.clone({name: 'moe'});
    => {name: 'moe'};

    tap_.tap(object, interceptor) 
    Invokes interceptor with the object, and then returns object. The primary purpose of this method is to "tap into" a method chain, in order to perform operations on intermediate results within the chain.

    _.chain([1,2,3,200])
      .filter(function(num) { return num % 2 == 0; })
      .tap(alert)
      .map(function(num) { return num * num })
      .value();
    => // [2, 200] (alerted)
    => [4, 40000]

    has_.has(object, key) 
    Does the object contain the given key?

    Identical to object.hasOwnProperty(key), but uses a safe reference to the hasOwnProperty function, in case it's been overridden accidentally.

    _.has({a: 1, b: 2, c: 3}, "b");
    => true

    property_.property(key) 
    Returns a function that will itself return the key property of any passed-in object.

    var moe = {name: 'moe'};
    'moe' === _.property('name')(moe);
    => true

    matches_.matches(attrs) 
    Returns a predicate function that will tell you if a passed in object contains all of the key/value properties present in attrs.

    var ready = _.matches({selected: true, visible: true});
    var readyToGoList = _.filter(list, ready);

    isEqual_.isEqual(object, other) 
    Performs an optimized deep comparison between the two objects, to determine if they should be considered equal.

    var moe   = {name: 'moe', luckyNumbers: [13, 27, 34]};
    var clone = {name: 'moe', luckyNumbers: [13, 27, 34]};
    moe == clone;
    => false
    _.isEqual(moe, clone);
    => true

    isEmpty_.isEmpty(object) 
    Returns true if an enumerable object contains no values (no enumerable own-properties). For strings and array-like objects _.isEmpty checks if the length property is 0.

    _.isEmpty([1, 2, 3]);
    => false
    _.isEmpty({});
    => true

    isElement_.isElement(object) 
    Returns true if object is a DOM element.

    _.isElement(jQuery('body')[0]);
    => true

    isArray_.isArray(object) 
    Returns true if object is an Array.

    (function(){ return _.isArray(arguments); })();
    => false
    _.isArray([1,2,3]);
    => true

    isObject_.isObject(value) 
    Returns true if value is an Object. Note that JavaScript arrays and functions are objects, while (normal) strings and numbers are not.

    _.isObject({});
    => true
    _.isObject(1);
    => false

    isArguments_.isArguments(object) 
    Returns true if object is an Arguments object.

    (function(){ return _.isArguments(arguments); })(1, 2, 3);
    => true
    _.isArguments([1,2,3]);
    => false

    isFunction_.isFunction(object) 
    Returns true if object is a Function.

    _.isFunction(alert);
    => true

    isString_.isString(object) 
    Returns true if object is a String.

    _.isString("moe");
    => true

    isNumber_.isNumber(object) 
    Returns true if object is a Number (including NaN).

    _.isNumber(8.4 * 5);
    => true

    isFinite_.isFinite(object) 
    Returns true if object is a finite Number.

    _.isFinite(-101);
    => true
    
    _.isFinite(-Infinity);
    => false

    isBoolean_.isBoolean(object) 
    Returns true if object is either true or false.

    _.isBoolean(null);
    => false

    isDate_.isDate(object) 
    Returns true if object is a Date.

    _.isDate(new Date());
    => true
    

    isRegExp_.isRegExp(object) 
    Returns true if object is a RegExp.

    _.isRegExp(/moe/);
    => true
    

    isNaN_.isNaN(object) 
    Returns true if object is NaN.
    Note: this is not the same as the native isNaN function, which will also return true for many other not-number values, such as undefined.

    _.isNaN(NaN);
    => true
    isNaN(undefined);
    => true
    _.isNaN(undefined);
    => false
    

    isNull_.isNull(object) 
    Returns true if the value of object is null.

    _.isNull(null);
    => true
    _.isNull(undefined);
    => false
    

    isUndefined_.isUndefined(value) 
    Returns true if value is undefined.

    _.isUndefined(window.missingVariable);
    => true



  • 相关阅读:
    KMP算法
    Java中的字段和属性
    Java的垃圾回收机制
    一个初学所了解的jquery事件
    jQuery选择器
    hide(1000)跟show(1000)
    show/hide
    点击消失功能
    Java中集合Set的用法
    oracle的nvl和sql server的isnull
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/6956440.html
Copyright © 2011-2022 走看看