前端必会的20个JavaScript写法,你都学会了吗?
IntersectionObserver 实现滚动效果:
使用 IntersectionObserver 监听元素是否进入可视区,一旦进入可视区,添加相应的动画效果。
// 示例代码 const observer = new IntersectionObserver((entries, observer) => { entries.forEach(entry => { if (entry.isIntersecting) { entry.target.classList.add('animate-class'); // 添加动画类 observer.unobserve(entry.target); // 停止观察,避免重复触发 } }); }); const targetElement = document.querySelector('.target-element'); observer.observe(targetElement);
代理的使用:
// 示例代码 const handler = { get: function(target, prop) { return prop in target ? target[prop] : 'Property does not exist.'; } }; const proxyObj = new Proxy({ name: 'John' }, handler); console.log(proxyObj.name); // Output: John console.log(proxyObj.age); // Output: Property does not exist.
ES6 模块化:
使用 ES6 模块化导出和导入模块,提高代码可维护性。// 示例代码 // utils.js export function add(a, b) { return a + b; } // main.js import { add } from './utils'; console.log(add(5, 3)); // Output: 8
缓存提速:
利用缓存机制,提高数据访问速度。// 示例代码 function cachedFunction() { const cache = {}; return function(key) { if (key in cache) { return cache[key]; } else { const result = /* 计算结果 */; cache[key] = result; return result; } }; } const cachedAdd = cachedFunction(); console.log(cachedAdd(2, 3)); // Output: 缓存结果
闭包创建私有变量:
// 示例代码 function createCounter() { let count = 0; return function() { return ++count; }; } const counter = createCounter(); console.log(counter()); // Output: 1 console.log(counter())...
点击查看剩余70%
网友评论