index.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. (function() {
  2. var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
  3. var __module = nodeEnv ? module : {exports:{}};
  4. var __filename = 'preview-scripts/__node_modules/k8w-super-object/index.js';
  5. var __require = nodeEnv ? function (request) {
  6. return cc.require(request);
  7. } : function (request) {
  8. return __quick_compile_project__.require(request, __filename);
  9. };
  10. function __define (exports, require, module) {
  11. if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
  12. ///<reference path="index.d.ts"/>
  13. /**
  14. * 将sources合并到target,该合并全部是深拷贝
  15. * @param target
  16. * @param sources
  17. * @returns {Object}
  18. */
  19. Object.merge = function (target) {
  20. var sources = [];
  21. for (var _i = 1; _i < arguments.length; _i++) {
  22. sources[_i - 1] = arguments[_i];
  23. }
  24. for (var i = 0; i < sources.length; ++i) {
  25. var source = sources[i];
  26. if (typeof source != 'object' || source == null) {
  27. continue;
  28. }
  29. for (var skey in source) {
  30. //只处理自身的key 这里可能来自于外部prototype的扩展
  31. if (!source.hasOwnProperty(skey)) {
  32. continue;
  33. }
  34. if (source[skey] instanceof Date) {
  35. //Date类型 要克隆一份 保证深拷贝
  36. target[skey] = new Date(source[skey]);
  37. continue;
  38. }
  39. else if (typeof (target[skey]) == 'object' && target[skey] != null && typeof (source[skey]) == 'object' && source[skey] != null) {
  40. // 两个都是Object 递归merge之
  41. Object.merge(target[skey], source[skey]);
  42. }
  43. else {
  44. if (Array.isArray(source[skey])) {
  45. // 数组merge后还是数组
  46. target[skey] = Object.merge([], source[skey]);
  47. }
  48. else if (typeof (source[skey]) == 'object' && source[skey] !== null) {
  49. // Object要克隆一份以确保深拷贝
  50. target[skey] = Object.merge({}, source[skey]);
  51. }
  52. else {
  53. // 基本类型 直接赋值即可
  54. target[skey] = source[skey];
  55. }
  56. }
  57. }
  58. }
  59. return target;
  60. };
  61. if (!Object.values) {
  62. Object.values = function (obj) {
  63. var output = [];
  64. for (var k in obj) {
  65. obj.hasOwnProperty(k) && output.push(obj[k]);
  66. }
  67. return output;
  68. };
  69. }
  70. if (!Object.entries) {
  71. Object.entries = function (obj) {
  72. var output = [];
  73. for (var key in obj) {
  74. if (!obj.hasOwnProperty(key)) {
  75. continue;
  76. }
  77. output.push([key, obj[key]]);
  78. }
  79. return output;
  80. };
  81. }
  82. Object.forEach = function (obj, handler) {
  83. for (var key in obj) {
  84. if (!obj.hasOwnProperty(key)) {
  85. return;
  86. }
  87. handler(obj[key], key, obj);
  88. }
  89. };
  90. }
  91. if (nodeEnv) {
  92. __define(__module.exports, __require, __module);
  93. }
  94. else {
  95. __quick_compile_project__.registerModuleFunc(__filename, function () {
  96. __define(__module.exports, __require, __module);
  97. });
  98. }
  99. })();