|
@@ -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));
|
|
|
+```
|