Browse Source

Gitbook Auto Published

willin 8 years ago
parent
commit
ef0790ecc5
2 changed files with 37 additions and 1 deletions
  1. 2 1
      SUMMARY.md
  2. 35 0
      project/js/tricks.md

+ 2 - 1
SUMMARY.md

@@ -16,6 +16,7 @@
     - [NativeScript](project/source/nativescript.md)
     - [Koa](project/source/koa.md)
   - [JavaScript](project/js/README.md)
+    - [Tricks](project/js/tricks.md)
     - [Promise](project/js/promise.md)
     - [ES6/7](project/js/es6.md)
     - [Benchmark](project/js/benchmark.md)
@@ -46,7 +47,7 @@
   - [CI工作流](operation/workflow.md)
   - [重启服务](operation/restarter.md)
   - [版本回退](operation/rollback.md)
-- [能力](basic/README.md)
+- [常识能力原则思想](basic/README.md)
   - [问题处理能力](basic/solving.md)
   - 原则
     - [招聘原则](basic/hire.md)

+ 35 - 0
project/js/tricks.md

@@ -0,0 +1,35 @@
+# tricks
+
+## Deep Clone
+
+```js
+const obj2 = JSON.parse(JSON.stringify( obj1 ));
+```
+
+## Scroll Debounce
+
+```js
+function debounce(func, wait = 20, immediate = true) {
+  var timeout;
+  return function() {
+    var context = this, args = arguments;
+    var later = function() {
+      timeout = null;
+      if (!immediate) func.apply(context, args);
+    };
+    var callNow = immediate && !timeout;
+    clearTimeout(timeout);
+    timeout = setTimeout(later, wait);
+    if (callNow) func.apply(context, args);
+  };
+};
+
+
+// Demo
+function testFunc(e) {
+  console.count(e);
+}
+
+window.addEventListener('scroll', ()=>console.count('bounce'));
+window.addEventListener('scroll', debounce(testFunc));
+```