B2BÍøÂçÈí¼þ

 ÕÒ»ØÃÜÂë
 Á¢¼´×¢²á ÉóºËÍøÕ¾ºÅ:QQ:896757558
ËÑË÷
²é¿´: 3|»Ø¸´: 0
´òÓ¡ ÉÏÒ»Ö÷Ìâ ÏÂÒ»Ö÷Ìâ

°²×¿½Å±¾AIWROKÈí¼þʾÀýJSº¯Êý¸ß¼¶Ó÷¨

[¸´ÖÆÁ´½Ó]

1086

Ö÷Ìâ

1091

Ìû×Ó

7621

»ý·Ö

abc

Rank: 9Rank: 9Rank: 9

»ý·Ö
7621
Ìø×ªµ½Ö¸¶¨Â¥²ã
Â¥Ö÷
°²×¿½Å±¾AIWROKÈí¼þʾÀýJSº¯Êý¸ß¼¶Ó÷¨ °²×¿½Å±¾AIWROKÈí¼þʾÀýJSº¯Êý¸ß¼¶Ó÷¨ B2BÍøÂçÈí¼þ

°²×¿½Å±¾AIWROKÈí¼þʾÀýJSº¯Êý¸ß¼¶Ó÷¨ B2BÍøÂçÈí¼þ

  1. // AIWROK Èí¼þ - JavaScriptº¯Êý×ÛºÏʾÀý´óÈ«
  2. // ×÷Õß: AIWROK ¿ª·¢ÍŶÓ
  3. // ÈÕÆÚ: 2024Äê6ÔÂ
  4. // 🍎½»Á÷QQȺ711841924Ⱥһ£¬Æ»¹ûÄÚ²âȺ£¬528816639

  5. /**
  6. * =============================================================================
  7. * JavaScriptº¯Êý×ÛºÏʾÀý´óÈ«
  8. * =============================================================================
  9. * »ùÓÚÖ÷½Å±¾Öеĺ¯ÊýÓ﷨˵Ã÷£¬Õ¹Ê¾JavaScriptº¯ÊýµÄ¸÷Öָ߼¶Ó¦ÓÃ
  10. * °üº¬£º»ù´¡º¯Êý¡¢±Õ°ü¡¢¸ß½×º¯Êý¡¢µÝ¹é¡¢Éè¼ÆÄ£Ê½¡¢Òì²½±à³Ì¡¢ÐÔÄÜÓÅ»¯¡¢´íÎó´¦Àí
  11. *
  12. * ¼æÈÝÐÔ£ºRhino ÒýÇæ (ES5)
  13. * ƽ̨£ºAIWROK °²×¿×Ô¶¯»¯Èí¼þ
  14. * =============================================================================
  15. */

  16. // =============================================================================
  17. // ¹¤¾ßº¯Êý
  18. // =============================================================================

  19. // ÑÓ³Ùº¯Êý£¨±ÜÃâÓëϵͳsleep³åÍ»£©
  20. function delay(ms) {
  21.     var start = new Date().getTime();
  22.     while (new Date().getTime() < start + ms) {
  23.         // µÈ´ý
  24.     }
  25. }

  26. // =============================================================================
  27. // µÚÒ»²¿·Ö£º»ù´¡º¯ÊýʾÀý
  28. // =============================================================================

  29. // ¼òµ¥º¯Êý¶¨Òå
  30. function greet(name) {
  31.     return "ÄãºÃ, " + name + "!";
  32. }

  33. // ´øÄ¬ÈϲÎÊýµÄº¯Êý
  34. function greetWithDefault(name) {
  35.     var defaultName = "Óû§";
  36.     if (name === undefined || name === null) {
  37.         name = defaultName;
  38.     }
  39.     return "ÄãºÃ, " + name + "!";
  40. }

  41. // ¶à²ÎÊýº¯Êý
  42. function calculateArea(width, height) {
  43.     return width * height;
  44. }

  45. // ÑÝʾ»ù´¡º¯Êý
  46. function demoBasicFunctions() {
  47.     console.log("=== »ù´¡º¯ÊýʾÀý ===");
  48.    
  49.     var greeting = greet("ÕÅÈý");
  50.     console.log(greeting);
  51.    
  52.     var defaultGreeting = greetWithDefault();
  53.     console.log(defaultGreeting);
  54.    
  55.     var area = calculateArea(5, 10);
  56.     console.log("¾ØÐÎÃæ»ý: " + area);
  57. }

  58. // =============================================================================
  59. // µÚ¶þ²¿·Ö£º·µ»ØÖµÓëÌõ¼þ·µ»Ø
  60. // =============================================================================

  61. // ·µ»Øµ¥¸öÖµ
  62. function getMaxValue(arr) {
  63.     if (!arr || arr.length === 0) {
  64.         return null;
  65.     }
  66.    
  67.     var max = arr[0];
  68.     for (var i = 1; i < arr.length; i++) {
  69.         if (arr[i] > max) {
  70.             max = arr[i];
  71.         }
  72.     }
  73.     return max;
  74. }

  75. // Ìõ¼þ·µ»ØÊ¾Àý
  76. function divideNumbers(a, b) {
  77.     if (b === 0) {
  78.         return "´íÎó: ³ýÊý²»ÄÜΪÁã";
  79.     }
  80.     return a / b;
  81. }

  82. // ÑÝʾ·µ»ØÖµº¯Êý
  83. function demoReturnValues() {
  84.     console.log("=== ·µ»ØÖµº¯ÊýʾÀý ===");
  85.    
  86.     var numbers = [3, 7, 2, 9, 1, 5];
  87.     var maxValue = getMaxValue(numbers);
  88.     console.log("Êý×é×î´óÖµ: " + maxValue);
  89.    
  90.     var result1 = divideNumbers(10, 2);
  91.     console.log("10 ¡Â 2 = " + result1);
  92.    
  93.     var result2 = divideNumbers(10, 0);
  94.     console.log(result2);
  95. }

  96. // =============================================================================
  97. // µÚÈý²¿·Ö£º±Õ°üÓë˽ÓбäÁ¿
  98. // =============================================================================

  99. // ´´½¨¼ÆÊýÆ÷¹¤³§º¯Êý
  100. function createCounter(initialValue) {
  101.     var count = initialValue || 0;
  102.    
  103.     return {
  104.         increment: function() {
  105.             count++;
  106.             return count;
  107.         },
  108.         decrement: function() {
  109.             count--;
  110.             return count;
  111.         },
  112.         getValue: function() {
  113.             return count;
  114.         },
  115.         reset: function() {
  116.             count = initialValue || 0;
  117.             return count;
  118.         }
  119.     };
  120. }

  121. // ÑÝʾ±Õ°ü
  122. function demoClosures() {
  123.     console.log("=== ±Õ°üʾÀý ===");
  124.    
  125.     var counter1 = createCounter(0);
  126.     var counter2 = createCounter(10);
  127.    
  128.     console.log("¼ÆÊýÆ÷1³õʼֵ: " + counter1.getValue());
  129.     console.log("¼ÆÊýÆ÷2³õʼֵ: " + counter2.getValue());
  130.    
  131.     counter1.increment();
  132.     counter1.increment();
  133.     counter2.decrement();
  134.    
  135.     console.log("¼ÆÊýÆ÷1µ±Ç°Öµ: " + counter1.getValue());
  136.     console.log("¼ÆÊýÆ÷2µ±Ç°Öµ: " + counter2.getValue());
  137. }

  138. // =============================================================================
  139. // µÚËIJ¿·Ö£º¸ß½×º¯Êý
  140. // =============================================================================

  141. // ¸ß½×º¯Êý£º½ÓÊÕº¯Êý×÷Ϊ²ÎÊý
  142. function applyOperation(a, b, operation) {
  143.     return operation(a, b);
  144. }

  145. function add(a, b) { return a + b; }
  146. function subtract(a, b) { return a - b; }
  147. function multiply(a, b) { return a * b; }

  148. // ¸ß½×º¯Êý£º·µ»Øº¯Êý
  149. function createMultiplier(factor) {
  150.     return function(number) {
  151.         return number * factor;
  152.     };
  153. }

  154. // ÑÝʾ¸ß½×º¯Êý
  155. function demoHigherOrderFunctions() {
  156.     console.log("=== ¸ß½×º¯ÊýʾÀý ===");
  157.    
  158.     var sum = applyOperation(5, 3, add);
  159.     console.log("5 + 3 = " + sum);
  160.    
  161.     var product = applyOperation(6, 7, multiply);
  162.     console.log("6 ¡Á 7 = " + product);
  163.    
  164.     var double = createMultiplier(2);
  165.     console.log("5 µÄÁ½±¶: " + double(5));
  166. }

  167. // =============================================================================
  168. // µÚÎ岿·Ö£ºµÝ¹éº¯Êý
  169. // =============================================================================

  170. // ¼ÆËã½×³Ë
  171. function factorial(n) {
  172.     if (n <= 1) {
  173.         return 1;
  174.     }
  175.     return n * factorial(n - 1);
  176. }

  177. // ì³²¨ÄÇÆõÊýÁÐ
  178. function fibonacci(n) {
  179.     if (n <= 1) {
  180.         return n;
  181.     }
  182.     return fibonacci(n - 1) + fibonacci(n - 2);
  183. }

  184. // ÑÝʾµÝ¹éº¯Êý
  185. function demoRecursion() {
  186.     console.log("=== µÝ¹éº¯ÊýʾÀý ===");
  187.    
  188.     console.log("5! = " + factorial(5));
  189.     console.log("7! = " + factorial(7));
  190.    
  191.     console.log("ì³²¨ÄÇÆõÊýÁÐǰ10Ïî:");
  192.     for (var i = 0; i < 10; i++) {
  193.         console.log("F(" + i + ") = " + fibonacci(i));
  194.     }
  195. }

  196. // =============================================================================
  197. // µÚÁù²¿·Ö£º¹¹Ô캯ÊýÓëÃæÏò¶ÔÏó
  198. // =============================================================================

  199. // ¶¨ÒåѧÉúÀà
  200. function Student(name, age, grade) {
  201.     this.name = name;
  202.     this.age = age;
  203.     this.grade = grade;
  204.    
  205.     this.getInfo = function() {
  206.         return "ÐÕÃû: " + this.name + ", ÄêÁä: " + this.age + ", Äê¼¶: " + this.grade;
  207.     };
  208.    
  209.     this.isAdult = function() {
  210.         return this.age >= 18;
  211.     };
  212. }

  213. Student.prototype.promote = function() {
  214.     this.grade++;
  215.     return this.grade;
  216. };

  217. // ÑÝʾ¹¹Ô캯Êý
  218. function demoConstructors() {
  219.     console.log("=== ¹¹Ô캯ÊýʾÀý ===");
  220.    
  221.     var student1 = new Student("ÕÅÈý", 16, 10);
  222.     var student2 = new Student("ÀîËÄ", 19, 12);
  223.    
  224.     console.log(student1.getInfo());
  225.     console.log("ÊÇ·ñ³ÉÄê: " + student1.isAdult());
  226.    
  227.     student1.promote();
  228.     console.log(student1.name + " Éý¼¶µ½Äê¼¶: " + student1.grade);
  229. }

  230. // =============================================================================
  231. // µÚÆß²¿·Ö£º»Øµ÷º¯Êý
  232. // =============================================================================

  233. // Ä£ÄâÒì²½²Ù×÷
  234. function simulateAsyncOperation(data, callback) {
  235.     var processedData = data.toUpperCase();
  236.     callback(processedData);
  237. }

  238. // ´¦ÀíÊý×éµÄÿ¸öÔªËØ
  239. function processArray(arr, processor) {
  240.     var results = [];
  241.     for (var i = 0; i < arr.length; i++) {
  242.         results.push(processor(arr[i]));
  243.     }
  244.     return results;
  245. }

  246. // ÑÝʾ»Øµ÷º¯Êý
  247. function demoCallbacks() {
  248.     console.log("=== »Øµ÷º¯ÊýʾÀý ===");
  249.    
  250.     simulateAsyncOperation("hello world", function(result) {
  251.         console.log("Òì²½²Ù×÷½á¹û: " + result);
  252.     });
  253.    
  254.     var numbers = [1, 2, 3, 4, 5];
  255.     var squared = processArray(numbers, function(num) {
  256.         return num * num;
  257.     });
  258.     console.log("ƽ·½½á¹û: " + JSON.stringify(squared));
  259. }

  260. // =============================================================================
  261. // µÚ°Ë²¿·Ö£ºµ¥Àýģʽ
  262. // =============================================================================

  263. var ConfigManager = (function() {
  264.     var instance;
  265.    
  266.     function ConfigManager() {
  267.         this.config = {};
  268.         
  269.         this.set = function(key, value) {
  270.             this.config[key] = value;
  271.         };
  272.         
  273.         this.get = function(key) {
  274.             return this.config[key];
  275.         };
  276.     }
  277.    
  278.     return {
  279.         getInstance: function() {
  280.             if (!instance) {
  281.                 instance = new ConfigManager();
  282.             }
  283.             return instance;
  284.         }
  285.     };
  286. })();

  287. // ÑÝʾµ¥Àýģʽ
  288. function demoSingletonPattern() {
  289.     console.log("=== µ¥ÀýģʽʾÀý ===");
  290.    
  291.     var config1 = ConfigManager.getInstance();
  292.     var config2 = ConfigManager.getInstance();
  293.    
  294.     console.log("Á½¸öʵÀýÊÇ·ñÏàͬ: " + (config1 === config2));
  295.    
  296.     config1.set("appName", "AIWROK");
  297.     config1.set("version", "2.0");
  298.    
  299.     console.log("Ó¦ÓÃÃû³Æ: " + config2.get("appName"));
  300.     console.log("°æ±¾ºÅ: " + config2.get("version"));
  301. }

  302. // =============================================================================
  303. // µÚ¾Å²¿·Ö£º¹¤³§Ä£Ê½
  304. // =============================================================================

  305. // ÐÎ×´»ùÀà
  306. function Shape(type) {
  307.     this.type = type;
  308. }

  309. Shape.prototype.draw = function() {
  310.     throw new Error("draw·½·¨±ØÐë±»ÖØÐ´");
  311. };

  312. // Ô²ÐÎÀà
  313. function Circle(radius) {
  314.     Shape.call(this, "circle");
  315.     this.radius = radius;
  316. }

  317. Circle.prototype = Object.create(Shape.prototype);
  318. Circle.prototype.constructor = Circle;
  319. Circle.prototype.draw = function() {
  320.     return "»æÖÆÔ²ÐΣ¬°ë¾¶: " + this.radius;
  321. };

  322. // ¾ØÐÎÀà
  323. function Rectangle(width, height) {
  324.     Shape.call(this, "rectangle");
  325.     this.width = width;
  326.     this.height = height;
  327. }

  328. Rectangle.prototype = Object.create(Shape.prototype);
  329. Rectangle.prototype.constructor = Rectangle;
  330. Rectangle.prototype.draw = function() {
  331.     return "»æÖƾØÐΣ¬¿í: " + this.width + ", ¸ß: " + this.height;
  332. };

  333. // ÐÎ×´¹¤³§
  334. function ShapeFactory() {
  335.     this.createShape = function(type, params) {
  336.         switch (type.toLowerCase()) {
  337.             case "circle":
  338.                 return new Circle(params.radius || 1);
  339.             case "rectangle":
  340.                 return new Rectangle(params.width || 1, params.height || 1);
  341.             default:
  342.                 throw new Error("²»Ö§³ÖµÄÐÎ×´ÀàÐÍ: " + type);
  343.         }
  344.     };
  345. }

  346. // ÑÝʾ¹¤³§Ä£Ê½
  347. function demoFactoryPattern() {
  348.     console.log("=== ¹¤³§Ä£Ê½Ê¾Àý ===");
  349.    
  350.     var factory = new ShapeFactory();
  351.    
  352.     var circle = factory.createShape("circle", { radius: 5 });
  353.     var rectangle = factory.createShape("rectangle", { width: 4, height: 6 });
  354.    
  355.     console.log(circle.draw());
  356.     console.log(rectangle.draw());
  357. }

  358. // =============================================================================
  359. // µÚÊ®²¿·Ö£º¹Û²ìÕßģʽ
  360. // =============================================================================

  361. function EventEmitter() {
  362.     this.events = {};
  363. }

  364. EventEmitter.prototype.on = function(eventName, listener) {
  365.     if (!this.events[eventName]) {
  366.         this.events[eventName] = [];
  367.     }
  368.     this.events[eventName].push(listener);
  369. };

  370. EventEmitter.prototype.emit = function(eventName) {
  371.     var args = Array.prototype.slice.call(arguments, 1);
  372.    
  373.     if (this.events[eventName]) {
  374.         for (var i = 0; i < this.events[eventName].length; i++) {
  375.             this.events[eventName][i].apply(null, args);
  376.         }
  377.     }
  378. };

  379. // ÑÝʾ¹Û²ìÕßģʽ
  380. function demoObserverPattern() {
  381.     console.log("=== ¹Û²ìÕßģʽʾÀý ===");
  382.    
  383.     var emitter = new EventEmitter();
  384.    
  385.     var listener1 = function(data) {
  386.         console.log("¼àÌýÆ÷1ÊÕµ½: " + data);
  387.     };
  388.    
  389.     var listener2 = function(data) {
  390.         console.log("¼àÌýÆ÷2ÊÕµ½: " + data);
  391.     };
  392.    
  393.     emitter.on("data", listener1);
  394.     emitter.on("data", listener2);
  395.    
  396.     console.log("´¥·¢dataʼþ:");
  397.     emitter.emit("data", "µÚÒ»ÌõÊý¾Ý");
  398. }

  399. // =============================================================================
  400. // µÚʮһ²¿·Ö£ºPromiseÄ£Äâ
  401. // =============================================================================

  402. function SimplePromise(executor) {
  403.     this.state = "pending";
  404.     this.value = null;
  405.     this.callbacks = [];
  406.    
  407.     var self = this;
  408.    
  409.     function resolve(value) {
  410.         if (self.state === "pending") {
  411.             self.state = "fulfilled";
  412.             self.value = value;
  413.             
  414.             setTimeout(function() {
  415.                 for (var i = 0; i < self.callbacks.length; i++) {
  416.                     self.callbacks[i].onFulfilled(value);
  417.                 }
  418.             }, 0);
  419.         }
  420.     }
  421.    
  422.     function reject(reason) {
  423.         if (self.state === "pending") {
  424.             self.state = "rejected";
  425.             self.value = reason;
  426.             
  427.             setTimeout(function() {
  428.                 for (var i = 0; i < self.callbacks.length; i++) {
  429.                     if (self.callbacks[i].onRejected) {
  430.                         self.callbacks[i].onRejected(reason);
  431.                     }
  432.                 }
  433.             }, 0);
  434.         }
  435.     }
  436.    
  437.     try {
  438.         executor(resolve, reject);
  439.     } catch (e) {
  440.         reject(e);
  441.     }
  442. }

  443. SimplePromise.prototype.then = function(onFulfilled, onRejected) {
  444.     var self = this;
  445.    
  446.     return new SimplePromise(function(resolve, reject) {
  447.         function handleValue(value) {
  448.             try {
  449.                 if (typeof onFulfilled === "function") {
  450.                     var result = onFulfilled(value);
  451.                     resolve(result);
  452.                 } else {
  453.                     resolve(value);
  454.                 }
  455.             } catch (e) {
  456.                 reject(e);
  457.             }
  458.         }
  459.         
  460.         if (self.state === "fulfilled") {
  461.             setTimeout(function() {
  462.                 handleValue(self.value);
  463.             }, 0);
  464.         } else {
  465.             self.callbacks.push({
  466.                 onFulfilled: handleValue,
  467.                 onRejected: onRejected
  468.             });
  469.         }
  470.     });
  471. };

  472. // ÑÝʾPromise
  473. function demoPromise() {
  474.     console.log("=== PromiseʾÀý ===");
  475.    
  476.     var promise1 = new SimplePromise(function(resolve, reject) {
  477.         setTimeout(function() {
  478.             resolve("PromiseÍê³É");
  479.         }, 100);
  480.     });
  481.    
  482.     promise1.then(function(result) {
  483.         console.log("½á¹û: " + result);
  484.     });
  485. }

  486. // =============================================================================
  487. // µÚÊ®¶þ²¿·Ö£º¼ÇÒ仯ÓÅ»¯
  488. // =============================================================================

  489. function memoize(func) {
  490.     var cache = {};
  491.    
  492.     return function() {
  493.         var key = JSON.stringify(arguments);
  494.         
  495.         if (cache.hasOwnProperty(key)) {
  496.             return cache[key];
  497.         }
  498.         
  499.         var result = func.apply(this, arguments);
  500.         cache[key] = result;
  501.         return result;
  502.     };
  503. }

  504. // ¼ÇÒ仯쳲¨ÄÇÆõ
  505. var fibonacciMemoized = memoize(function(n) {
  506.     if (n <= 1) return n;
  507.     return fibonacciMemoized(n - 1) + fibonacciMemoized(n - 2);
  508. });

  509. // ÑÝʾ¼ÇÒ仯
  510. function demoMemoization() {
  511.     console.log("=== ¼ÇÒ仯ʾÀý ===");
  512.    
  513.     var start1 = new Date().getTime();
  514.     var result1 = fibonacciMemoized(30);
  515.     var time1 = new Date().getTime() - start1;
  516.     console.log("¼ÇÒ仯쳲¨ÄÇÆõ(30): " + result1 + ", ºÄʱ: " + time1 + "ms");
  517.    
  518.     var start2 = new Date().getTime();
  519.     var result2 = fibonacciMemoized(30);
  520.     var time2 = new Date().getTime() - start2;
  521.     console.log("Ôٴε÷ÓÃ(»º´æ): " + result2 + ", ºÄʱ: " + time2 + "ms");
  522. }

  523. // =============================================================================
  524. // µÚÊ®Èý²¿·Ö£º½ÚÁ÷Óë·À¶¶
  525. // =============================================================================

  526. // ½ÚÁ÷º¯Êý
  527. function throttle(func, delay) {
  528.     var lastCall = 0;
  529.    
  530.     return function() {
  531.         var now = new Date().getTime();
  532.         
  533.         if (now - lastCall >= delay) {
  534.             lastCall = now;
  535.             return func.apply(this, arguments);
  536.         }
  537.     };
  538. }

  539. // ·À¶¶º¯Êý
  540. function debounce(func, delay) {
  541.     var timeoutId;
  542.    
  543.     return function() {
  544.         var context = this;
  545.         var args = arguments;
  546.         
  547.         clearTimeout(timeoutId);
  548.         timeoutId = setTimeout(function() {
  549.             func.apply(context, args);
  550.         }, delay);
  551.     };
  552. }

  553. // ÑÝʾ½ÚÁ÷
  554. function demoThrottling() {
  555.     console.log("=== ½ÚÁ÷ʾÀý ===");
  556.    
  557.     var callCount = 0;
  558.     var throttledFunction = throttle(function() {
  559.         callCount++;
  560.         console.log("º¯Êý±»µ÷Óã¬×Ü´ÎÊý: " + callCount);
  561.     }, 1000);
  562.    
  563.     for (var i = 0; i < 5; i++) {
  564.         throttledFunction();
  565.         var start = new Date().getTime();
  566.         while (new Date().getTime() < start + 200) {}
  567.     }
  568.    
  569.     console.log("×îÖÕµ÷ÓôÎÊý: " + callCount);
  570. }

  571. // =============================================================================
  572. // µÚÊ®ËIJ¿·Ö£º´íÎó´¦Àí
  573. // =============================================================================

  574. // °²È«³ý·¨º¯Êý
  575. function safeDivide(a, b) {
  576.     try {
  577.         if (typeof a !== 'number' || typeof b !== 'number') {
  578.             throw new TypeError("²ÎÊý±ØÐëÊÇÊý×Ö");
  579.         }
  580.         
  581.         if (b === 0) {
  582.             throw new Error("³ýÊý²»ÄÜΪÁã");
  583.         }
  584.         
  585.         return a / b;
  586.     } catch (error) {
  587.         console.log("²¶»ñµ½´íÎó: " + error.name + " - " + error.message);
  588.         return null;
  589.     }
  590. }

  591. // ×Ô¶¨Òå´íÎóÀà
  592. function CustomError(message, code) {
  593.     this.name = "CustomError";
  594.     this.message = message;
  595.     this.code = code;
  596.     this.timestamp = new Date().toISOString();
  597. }

  598. CustomError.prototype = Object.create(Error.prototype);
  599. CustomError.prototype.constructor = CustomError;

  600. // ÑÝʾ´íÎó´¦Àí
  601. function demoErrorHandling() {
  602.     console.log("=== ´íÎó´¦ÀíʾÀý ===");
  603.    
  604.     console.log("10 ¡Â 2 = " + safeDivide(10, 2));
  605.     console.log("10 ¡Â 0 = " + safeDivide(10, 0));
  606.    
  607.     try {
  608.         throw new CustomError("×Ô¶¨Òå´íÎóÏûÏ¢", "CUSTOM_CODE");
  609.     } catch (error) {
  610.         console.log("²¶»ñ×Ô¶¨Òå´íÎó: " + error.message);
  611.     }
  612. }

  613. // =============================================================================
  614. // µÚÊ®Î岿·Ö£ºÊµÕ½Ó¦Óà - Óû§¹ÜÀí
  615. // =============================================================================

  616. function User(id, name, email, age) {
  617.     this.id = id;
  618.     this.name = name;
  619.     this.email = email;
  620.     this.age = age;
  621.    
  622.     this.getInfo = function() {
  623.         return {
  624.             id: this.id,
  625.             name: this.name,
  626.             email: this.email,
  627.             age: this.age
  628.         };
  629.     };
  630.    
  631.     this.isAdult = function() {
  632.         return this.age >= 18;
  633.     };
  634. }

  635. function UserManager() {
  636.     this.users = [];
  637.     this.nextId = 1;
  638.    
  639.     this.addUser = function(name, email, age) {
  640.         var user = new User(this.nextId++, name, email, age);
  641.         this.users.push(user);
  642.         return user;
  643.     };
  644.    
  645.     this.getAdultUsers = function() {
  646.         var adults = [];
  647.         for (var i = 0; i < this.users.length; i++) {
  648.             if (this.users[i].isAdult()) {
  649.                 adults.push(this.users[i]);
  650.             }
  651.         }
  652.         return adults;
  653.     };
  654.    
  655.     this.getStats = function() {
  656.         return {
  657.             totalUsers: this.users.length,
  658.             adultUsers: this.getAdultUsers().length
  659.         };
  660.     };
  661. }

  662. // ÑÝʾÓû§¹ÜÀí
  663. function demoUserManagement() {
  664.     console.log("=== Óû§¹ÜÀíʾÀý ===");
  665.    
  666.     var userManager = new UserManager();
  667.    
  668.     userManager.addUser("ÕÅÈý", "zhangsan@example.com", 25);
  669.     userManager.addUser("ÀîËÄ", "lisi@example.com", 17);
  670.     userManager.addUser("ÍõÎå", "wangwu@example.com", 30);
  671.    
  672.     var stats = userManager.getStats();
  673.     console.log("Óû§Í³¼Æ: " + JSON.stringify(stats));
  674. }

  675. // =============================================================================
  676. // µÚÊ®Áù²¿·Ö£ºÊµÕ½Ó¦Óà - Êý¾Ý´¦ÀíÆ÷
  677. // =============================================================================

  678. function DataProcessor() {
  679.     this.data = [];
  680.    
  681.     this.addData = function(item) {
  682.         this.data.push(item);
  683.         return this;
  684.     };
  685.    
  686.     this.filter = function(predicate) {
  687.         var filtered = [];
  688.         for (var i = 0; i < this.data.length; i++) {
  689.             if (predicate(this.data[i])) {
  690.                 filtered.push(this.data[i]);
  691.             }
  692.         }
  693.         this.data = filtered;
  694.         return this;
  695.     };
  696.    
  697.     this.map = function(transformer) {
  698.         var transformed = [];
  699.         for (var i = 0; i < this.data.length; i++) {
  700.             transformed.push(transformer(this.data[i]));
  701.         }
  702.         this.data = transformed;
  703.         return this;
  704.     };
  705.    
  706.     this.getResult = function() {
  707.         return this.data;
  708.     };
  709.    
  710.     this.reset = function() {
  711.         this.data = [];
  712.         return this;
  713.     };
  714. }

  715. // ÑÝʾÊý¾Ý´¦ÀíÆ÷
  716. function demoDataProcessor() {
  717.     console.log("=== Êý¾Ý´¦ÀíÆ÷ʾÀý ===");
  718.    
  719.     var processor = new DataProcessor();
  720.    
  721.     processor.addData(1).addData(2).addData(3).addData(4).addData(5).addData(6);
  722.     console.log("ԭʼÊý¾Ý: " + JSON.stringify(processor.getResult()));
  723.    
  724.     processor
  725.         .filter(function(num) { return num % 2 === 0; })
  726.         .map(function(num) { return num * 2; });
  727.    
  728.     console.log("żÊý¼Ó±¶ºó: " + JSON.stringify(processor.getResult()));
  729. }

  730. // =============================================================================
  731. // Ö÷Ö´Ðк¯Êý
  732. // =============================================================================

  733. function main() {
  734.     console.log("===== JavaScriptº¯Êý×ÛºÏʾÀý´óÈ« =====");
  735.     console.log("");
  736.    
  737.     // »ù´¡²¿·Ö
  738.     demoBasicFunctions();
  739.     delay(2000);
  740.    
  741.     demoReturnValues();
  742.     delay(2000);
  743.    
  744.     demoClosures();
  745.     delay(2000);
  746.    
  747.     demoHigherOrderFunctions();
  748.     delay(2000);
  749.    
  750.     demoRecursion();
  751.     delay(2000);
  752.    
  753.     demoConstructors();
  754.     delay(2000);
  755.    
  756.     demoCallbacks();
  757.     delay(2000);
  758.    
  759.     // Éè¼ÆÄ£Ê½
  760.     demoSingletonPattern();
  761.     delay(2000);
  762.    
  763.     demoFactoryPattern();
  764.     delay(2000);
  765.    
  766.     demoObserverPattern();
  767.     delay(2000);
  768.    
  769.     // Òì²½±à³Ì
  770.     demoPromise();
  771.     delay(2000);
  772.    
  773.     // ÐÔÄÜÓÅ»¯
  774.     demoMemoization();
  775.     delay(2000);
  776.    
  777.     demoThrottling();
  778.     delay(2000);
  779.    
  780.     // ´íÎó´¦Àí
  781.     demoErrorHandling();
  782.     delay(2000);
  783.    
  784.     // ʵսӦÓÃ
  785.     demoUserManagement();
  786.     delay(2000);
  787.    
  788.     demoDataProcessor();
  789.    
  790.     console.log("");
  791.     console.log("===== ËùÓÐʾÀýÖ´ÐÐÍê³É =====");
  792. }

  793. // Ö´ÐÐÖ÷º¯Êý
  794. main();
¸´ÖÆ´úÂë







»Ø¸´

ʹÓõÀ¾ß ¾Ù±¨

±¾°æ»ý·Ö¹æÔò

¹Ø±Õ

QQ|»ÓªÏúÈí¼þ×ÛºÏÌÖÂÛ|»ÓªÏúÈí¼þÓÐÎʱشð|»ÓªÏúÈí¼þ½Ì³Ì×¨Çø|»ÓªÏúÈí¼þPOST½Å±¾·ÖÏí|»ÓªÏúÈí¼þÆÕͨ½Å±¾·ÖÏí|»ÓªÏúÈí¼þÈí¼þ×ÊѶ|»ÓªÏúÈí¼þ¾«Æ·Èí¼þ|»ÓªÏúÈí¼þ¸üй«¸æ|ÓªÏúÈí¼þ|B2BÈí¼þ|B2BÍøÂçÈí¼þ ( ¾©ICP±¸09078825ºÅ )±¾ÍøÕ¾¿ª·¢µÄÓªÏúÈí¼þÊÇÒ»¿îеÄÍøÂçÓªÏúÈí¼þ£¬Õâ¿îÓªÏú¿ÉÒÔÈ¥ÍøÕ¾Èí¼þ£¬²©¿ÍÈí¼þ£¬B2BÈí¼þ£¬·ÖÀàÐÅÏ¢Íø·¢Ìù£¬¿ÉÒÔÇÀɳ·¢£¬¿ÉÒÔµ½°Ù¶ÈÎÄ¿âÉÏ´«WORDÎĵµ£¬¿ÉÒÔµ½Ò»Ð©ÊÇÏà²áÍøÕ¾×Ô¶¯ÉÏ´«Í¼Æ¬£¬Õâ¸ö×Ô¶¯·¢ÌûÈí¼þ×Ô´øÔÆÖ©Ö룬¼Ó¿ìÊÕ¼£¬ÓÐ6ÖÖ¶Ô½Ó´òÂë½Ó¿Ú£¬·½±ã£¬Ð§Âʸߣ¬Ëٶȿ죬¶øÇÒ¶ÔÍ϶¯µÄÑéÖ¤ÂëÈ«ÍøµÚÒ»¼Ò¶À¼ÒÖ§³Ö£¬È«²¿Ô­´´¼¼Êõ£¬¶À¼ÒÑз¢£¬Õý°æÔ­´´´ø°æÈ¨Èí¼þ¡£Ñ¡ÔñÍòÄÜÓªÏúÈí¼þ£¬¾ÍÑ¡ÔñÁËÒ»ÖÖ׬ǮµÄЧÂÊ£¬´ÓûÓб»³¬Ô½¹ý£¬Ò»Ö±ÔÚŬÁ¦Ñз¢Ð¼¼Êõ¡£·Å·ÉÃÎÏ룬½â·ÅË«ÊÖ£¬À´µã´´Ò⣬³É¾ÍÄãµÄÃÎÏ룬¾ÍÔÚÍòÄÜÓªÏúÈí¼þ¿ªÊ¼

map2

GMT+8, 2026-4-27 08:13 , Processed in 0.164266 second(s), 33 queries .

¿ìËٻظ´ ·µ»Ø¶¥²¿ ·µ»ØÁбí