U.util.js 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295
  1. /*
  2. 此js作为 utility库 主要用于 类型判断
  3. */
  4. Namespace.register("U.Ut");
  5. //判断是否为数组
  6. U.Ut.isArray = Array.isArray;
  7. /**
  8. * 判断字符串是否为Guid
  9. *
  10. * @param {string} 需要判断的字符串
  11. * @return {boolean} 是否为guid
  12. */
  13. U.Ut.isGuid = function (UST) {
  14. return U.MS.isGuid(UST);
  15. }
  16. /**
  17. * 判断值是否等于formdate
  18. *
  19. * @param {object} 需要判断的FormData
  20. * @return {boolean} 是否为FormData
  21. */
  22. U.Ut.isFormData = function (obj) {
  23. return obj.toString() === "[object FormData]";
  24. }
  25. /**
  26. * 判断是否为对象
  27. *
  28. * @param {object} 判断对象是否为object对象
  29. * @return {boolean} 是否为FormData
  30. */
  31. U.Ut.isObject = function (UDE) {
  32. return (typeof UDE == "object" && UDE !== null);
  33. }
  34. /**
  35. * 是否参与for in循环的对象
  36. *
  37. * @param {object} 判断是否允许参加在for循环里
  38. * @return {boolean} 允许for in
  39. */
  40. U.Ut.IsFObj = function (UDE) {
  41. var i, _ = ["isArray", "isFunction", "isObject"]; //三种可参与for in的
  42. for (i = 0; i < _.length; i++) {
  43. if (U.M[_[i]](UDE)) {
  44. return _[i].substr(2);
  45. }
  46. }
  47. return false;
  48. }
  49. /**
  50. * 判断数组是否可用
  51. *
  52. * @param {array} 判断数组是否有值
  53. * @return {boolean} 是否为有值数组
  54. */
  55. U.Ut.isArrayLike = function (UDE) {
  56. return UDE && UDE.length && UDE.length < Array.MAX_ARRAY_INDEX;
  57. }
  58. /**
  59. * 判断是否为bool
  60. *
  61. * @param {array} 判断数组是否有值
  62. * @return {boolean} 是否为boolean值
  63. */
  64. U.Ut.isBoolean = function (UDE) {
  65. return typeof UDE === "boolean";
  66. }
  67. /**
  68. * 判断是否为空
  69. *
  70. * @param {object} 判断内容是否为空
  71. * @return {boolean} 是否为null
  72. */
  73. U.Ut.isNull = function (UDE) {
  74. return UDE === null;
  75. }
  76. /**
  77. * 判断是否为数字
  78. *
  79. * @param {array} 判断数组是否有值
  80. * @return {boolean} 是否为number
  81. */
  82. U.Ut.isNumber = function (UDE) {
  83. return typeof UDE == "number";
  84. }
  85. /**
  86. * 判断是否为字符串数字
  87. *
  88. * @param {array} 判断数组是否有值
  89. * @return {boolean} 是否为number
  90. */
  91. U.Ut.isStringInt = function (UDE) {
  92. return U.Ut.isNumber(UDE) || U.MS.Num.test(UDE);
  93. }
  94. /**
  95. * 判断是否为NaN
  96. *
  97. * @param {array} 判断数组是否有值
  98. * @return {boolean} 是否为number
  99. */
  100. U.Ut.isNaN = function (UDE) {
  101. typeof UDE == "NaN";
  102. }
  103. /**
  104. * 判断是否是无限循环数字
  105. *
  106. * @param {number} 判断数组是否有值
  107. * @return {boolean} 是否为number
  108. */
  109. U.Ut.isFinite = function (UDE) {
  110. return !isNaN(parseFloat(UDE)) && isFinite(UDE);
  111. }
  112. /**
  113. * 判断是否为字符串
  114. *
  115. * @param {string} 判断的字符串
  116. * @return {boolean} 是否为字符串
  117. */
  118. U.Ut.isString = function (str) {
  119. return typeof str == "string"
  120. }
  121. /**
  122. * 判断是否为Undefined
  123. *
  124. * @param {number} 判断数组是否有值
  125. * @return {boolean} 是否为number
  126. */
  127. U.Ut.isUndefined = function (UDE) {
  128. return (UDE === void 0);
  129. }
  130. /**
  131. * 判断是否为正则
  132. *
  133. * @param {RegExp} 正则值
  134. * @return {boolean} 是否为RegExp
  135. */
  136. U.Ut.isRegExp = function (UDE) {
  137. return U.Ut.isObject(UDE) && U.M.objectToString(UDE) == "[object RegExp]";
  138. }
  139. /**
  140. * 判断是否为时间
  141. *
  142. * @param {Date} 时间对象值
  143. * @return {boolean} 是否为Date
  144. */
  145. U.Ut.isDate = function (UDE) {
  146. return U.Ut.isObject(UDE) && U.M.objectToString(UDE) == "[object Date]";
  147. }
  148. /**
  149. * 判断是否为错误
  150. *
  151. * @param {Error} 错误对象值
  152. * @return {boolean} 是否为错误类型
  153. */
  154. U.Ut.isError = function (UDE) {
  155. return U.Ut.isObject(UDE) && U.M.objectToString(UDE) == "[object Error]";
  156. }
  157. /**
  158. * 判断是否为函数类型
  159. *
  160. * @param {function} 函数值
  161. * @return {boolean} 函数对象值
  162. */
  163. U.Ut.isFunction = function (UDE) {
  164. return ((typeof UDE == "function" && UDE.prototype) || U.M.objectToString(UDE) == "[object Function]");
  165. }
  166. /**
  167. * 判断是否为传参类
  168. *
  169. * @param {object} 函数值
  170. * @return {boolean} 返回是否为Arguments对象
  171. */
  172. U.Ut.isArguments = function (UDE) {
  173. return (typeof (UDE == "object") && _$(UDE).has("callee"));
  174. }
  175. /**
  176. * 判断object是否是空对象
  177. *
  178. * @param {object} 对象值
  179. * @return {boolean} 是否空对象
  180. */
  181. U.Ut.isEmpty = function (UDE) {
  182. var i, _UTF = true;
  183. for (i in UDE) {
  184. if (UDE.hasOwnProperty(i)) { _UTF = false; break; }
  185. }
  186. return _UTF;
  187. }
  188. /**
  189. * 判断是否为基础类型
  190. *
  191. * @param {object} undefined function string number object
  192. * @return {boolean} 是否空对象
  193. */
  194. U.Ut.isPrimitive = function (UDE) {
  195. var i, _UCE = ["undefined", "function", "string", "number", "object"];
  196. return _UCE.some(function (UCE, UIE) {
  197. return (typeof UDE) == UCE;
  198. });
  199. }
  200. /**
  201. * 判断是否为event对象
  202. *
  203. * @param {event} 判断是否为event对象
  204. * @return {boolean} 是否空event对象
  205. */
  206. U.Ut.isEvent = function (UDE) {
  207. if (UDE) {
  208. if (UDE == event) { return true; } //直接判断当前对象
  209. else if (event && event.constructor) { //通过链接判断
  210. return U.MS.Event.test(UDE.constructor.toString());
  211. }
  212. else if (typeof UDE == "object") { //判断srcElement
  213. return UDE.srcElement !== undefined;
  214. }
  215. }
  216. }
  217. //
  218. /**
  219. * 判断对象是否为hemlcontrol
  220. *
  221. * @param {element} 元素
  222. * @return {boolean} 判断是否为正常元素
  223. */
  224. U.Ut.IHtmlC = function (UDOD) {
  225. return UDOD.nodeType != null || UDOD == window || UDOD == document || UDOD.frames != null;
  226. }
  227. /**
  228. * 判断是否为元素
  229. *
  230. * @param {element} 元素
  231. * @return {boolean} 返回是否为元素 同时不为文本元素
  232. */
  233. U.Ut.isElement = function (UDOD) {
  234. return !!(UDOD && UDOD.nodeType === 1);
  235. }
  236. /**
  237. * 函数的作用是给已有的集合添加新的属性。
  238. *说明:此函数代替U.Json中的Add方法,以避免调试难调,速度降低的问题
  239. * @param {object} U.CD的自定义变量或者Array,Object等系统变量
  240. * @param {object} 属性的集合,形如:{ "domain": "1473.cn", "SystemId": 0}
  241. */
  242. U.Ut.AddObj = function (obj1, obj2) {
  243. for (var i in obj2) {
  244. if (obj2.hasOwnProperty(i)) {
  245. obj1[i] = obj2[i];
  246. }
  247. }
  248. return obj2;
  249. }
  250. /**
  251. * 对象数组,需要批量给对象添加属性。
  252. * @param {array} U.CD的自定义变量或者Array,Object等系统变量
  253. * @param {object} 属性的集合,形如:{ "domain": "1473.cn", "SystemId": 0}
  254. */
  255. U.Ut.AddArr = function (UDE, UAE) {
  256. for (var i = 0; i < UDE.length; i++) {
  257. U.Ut.AddObj(UDE[i], UAE);
  258. }
  259. }
  260. /**
  261. * 此函数代替U.Json中的Add方法,以避免调试难调,速度降低的问题。
  262. * @param {object 、 array} 自定义变量或者Array,Object等系统变量,
  263. * @param {object} 属性的集合,形如:{ "domain": "1473.cn", "SystemId": 0}
  264. */
  265. U.Ut.AddProperty = function (UDE, UAE) {
  266. //判断是集合或者集合数组,分别调用上2个函数。
  267. U.Ut.isArray(UDE) ? U.Ut.AddArr(UDE, UAE) : U.Ut.AddObj(UDE, UAE);
  268. }