📄 type.js
字号:
/* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved. Licensed under the Academic Free License version 2.1 or above OR the modified BSD license. For more information on Dojo licensing, see: http://dojotoolkit.org/community/licensing.shtml*/dojo.provide("dojo.lang.type");dojo.require("dojo.lang.common");dojo.lang.whatAmI = function(value) { dojo.deprecated("dojo.lang.whatAmI", "use dojo.lang.getType instead", "0.5"); return dojo.lang.getType(value);}dojo.lang.whatAmI.custom = {};dojo.lang.getType = function(/* anything */ value){ // summary: Attempts to determine what type value is. // value: Any literal value or object instance. try{ if(dojo.lang.isArray(value)){ return "array"; // string } if(dojo.lang.isFunction(value)){ return "function"; // string } if(dojo.lang.isString(value)){ return "string"; // string } if(dojo.lang.isNumber(value)){ return "number"; // string } if(dojo.lang.isBoolean(value)){ return "boolean"; // string } if(dojo.lang.isAlien(value)){ return "alien"; // string } if(dojo.lang.isUndefined(value)){ return "undefined"; // string } // FIXME: should this go first? for(var name in dojo.lang.whatAmI.custom){ if(dojo.lang.whatAmI.custom[name](value)){ return name; // string } } if(dojo.lang.isObject(value)){ return "object"; // string } }catch(e){} return "unknown"; // string}dojo.lang.isNumeric = function(/* anything */ value){ // summary: // Returns true if value can be interpreted as a number // value: Any literal value or object instance. // examples: // dojo.lang.isNumeric(3); // returns true // dojo.lang.isNumeric("3"); // returns true // dojo.lang.isNumeric(new Number(3)); // returns true // dojo.lang.isNumeric(new String("3")); // returns true // // dojo.lang.isNumeric(3/0); // returns false // dojo.lang.isNumeric("foo"); // returns false // dojo.lang.isNumeric(new Number("foo")); // returns false // dojo.lang.isNumeric(false); // returns false // dojo.lang.isNumeric(true); // returns false return (!isNaN(value) && isFinite(value) && (value != null) && !dojo.lang.isBoolean(value) && !dojo.lang.isArray(value) && !/^\s*$/.test(value) ); // boolean}dojo.lang.isBuiltIn = function(/* anything */ value){ // summary: // Returns true if value is of a type provided by core JavaScript // description: // Returns true for any literal, and for any object that is an // instance of a built-in type like String, Number, Boolean, Array, // Function, or Error. // value: Any literal value or object instance. return (dojo.lang.isArray(value) || dojo.lang.isFunction(value) || dojo.lang.isString(value) || dojo.lang.isNumber(value) || dojo.lang.isBoolean(value) || (value == null) || (value instanceof Error) || (typeof value == "error") ); // boolean}dojo.lang.isPureObject = function(/* anything */ value){ // summary: // Returns true for any value where the value of value.constructor == // Object // description: // Returns true for any literal, and for any object that is an // instance of a built-in type like String, Number, Boolean, Array, // Function, or Error. // value: // Any literal value or object instance. // examples: // dojo.lang.isPureObject(new Object()); // returns true // dojo.lang.isPureObject({a: 1, b: 2}); // returns true // // dojo.lang.isPureObject(new Date()); // returns false // dojo.lang.isPureObject([11, 2, 3]); // returns false return ((value != null) && dojo.lang.isObject(value) && value.constructor == Object ); // boolean}dojo.lang.isOfType = function(/* anything */ value, /* function */ type, /* object? */ keywordParameters) { /* summary: * Returns true if 'value' is of type 'type' * description: * Given a value and a datatype, this method returns true if the * type of the value matches the datatype. The datatype parameter * can be an array of datatypes, in which case the method returns * true if the type of the value matches any of the datatypes. * value: Any literal value or object instance. * type: A class of object, or a literal type, or the string name of a type, or an array with a list of types. * keywordParameters: {optional: boolean} */ /* examples: * dojo.lang.isOfType("foo", String); // returns true * dojo.lang.isOfType(12345, Number); // returns true * dojo.lang.isOfType(false, Boolean); // returns true * dojo.lang.isOfType([6, 8], Array); // returns true * dojo.lang.isOfType(dojo.lang.isOfType, Function); // returns true * dojo.lang.isOfType({foo: "bar"}, Object); // returns true * dojo.lang.isOfType(new Date(), Date); // returns true * * dojo.lang.isOfType("foo", "string"); // returns true * dojo.lang.isOfType(12345, "number"); // returns true * dojo.lang.isOfType(false, "boolean"); // returns true * dojo.lang.isOfType([6, 8], "array"); // returns true * dojo.lang.isOfType(dojo.lang.isOfType, "function"); // returns true * dojo.lang.isOfType({foo: "bar"}, "object"); // returns true * dojo.lang.isOfType(xxxxx, "undefined"); // returns true * dojo.lang.isOfType(null, "null"); // returns true * * dojo.lang.isOfType("foo", [Number, String, Boolean]); // returns true * dojo.lang.isOfType(12345, [Number, String, Boolean]); // returns true * dojo.lang.isOfType(false, [Number, String, Boolean]); // returns true * * dojo.lang.isOfType(null, Date, {optional: true} ); // returns true // description: */ var optional = false; if(keywordParameters){ optional = keywordParameters["optional"]; } if(optional && ((value === null) || dojo.lang.isUndefined(value))){ return true; // boolean } if(dojo.lang.isArray(type)){ var arrayOfTypes = type; for(var i in arrayOfTypes){ var aType = arrayOfTypes[i]; if(dojo.lang.isOfType(value, aType)){ return true; // boolean } } return false; // boolean }else{ if(dojo.lang.isString(type)){ type = type.toLowerCase(); } switch (type) { case Array: case "array": return dojo.lang.isArray(value); // boolean case Function: case "function": return dojo.lang.isFunction(value); // boolean case String: case "string": return dojo.lang.isString(value); // boolean case Number: case "number": return dojo.lang.isNumber(value); // boolean case "numeric": return dojo.lang.isNumeric(value); // boolean case Boolean: case "boolean": return dojo.lang.isBoolean(value); // boolean case Object: case "object": return dojo.lang.isObject(value); // boolean case "pureobject": return dojo.lang.isPureObject(value); // boolean case "builtin": return dojo.lang.isBuiltIn(value); // boolean case "alien": return dojo.lang.isAlien(value); // boolean case "undefined": return dojo.lang.isUndefined(value); // boolean case null: case "null": return (value === null); // boolean case "optional": dojo.deprecated('dojo.lang.isOfType(value, [type, "optional"])', 'use dojo.lang.isOfType(value, type, {optional: true} ) instead', "0.5"); return ((value === null) || dojo.lang.isUndefined(value)); // boolean default: if(dojo.lang.isFunction(type)){ return (value instanceof type); // boolean }else{ dojo.raise("dojo.lang.isOfType() was passed an invalid type"); } } } dojo.raise("If we get here, it means a bug was introduced above.");}dojo.lang.getObject=function(/* String */ str){ // summary: // Will return an object, if it exists, based on the name in the passed string. var parts=str.split("."), i=0, obj=dj_global; do{ obj=obj[parts[i++]]; }while(i<parts.length&&obj); return (obj!=dj_global)?obj:null; // Object}dojo.lang.doesObjectExist=function(/* String */ str){ // summary: // Check to see if object [str] exists, based on the passed string. var parts=str.split("."), i=0, obj=dj_global; do{ obj=obj[parts[i++]]; }while(i<parts.length&&obj); return (obj&&obj!=dj_global); // boolean}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -