(三)underscore.js架構Objects類API學習

來源:互聯網
上載者:User

(三)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參數的,通過下面代碼很容易證明

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);//chocolateconsole.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);=> trueisNaN(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



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.