• 當前位置:首頁 > IT技術 > Windows編程 > 正文

    (三)underscore.js框架Objects類API學習
    2021-08-06 12:42:30


    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



    本文摘自 :https://blog.51cto.com/u

    開通會員,享受整站包年服務
    国产呦精品一区二区三区网站|久久www免费人咸|精品无码人妻一区二区|久99久热只有精品国产15|中文字幕亚洲无线码