# Source code learning **Repository Path**: chw-harvey/source-code-learning ## Basic Information - **Project Name**: Source code learning - **Description**: javascript中设计模式、api等简易源码的实现学习笔记 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-03-07 - **Last Updated**: 2023-05-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README **此部分内容为学习中遇到的设计模式、原生API的简易实现等** ## 柯里化函数 在计算机科学中,柯里化(英语:Currying),又译为卡瑞化或加里化,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。 ## new 关键字 - 1. 在内存中创建一个新的对象 - 2. 将新创建对象的隐式原型赋值为构造函数的显示原型,newObj.__proto__ === fn.prototype - 3. 将构造函数的this指向新的newObj,并执行构造函数内的逻辑 - 4. 如果构造函数返回非空对象,则返回该对象,否则返回新创建的对象 ## 发布-订阅模式 - 事件订阅 on(type,callback) - 事件发布 emit(type,...args) - 取消订阅 off(type,callback) - 只订阅一次 once(type,callback) ## 性能优化 ### debounce(防抖) 在一定时间内连续触发的事件中只执行最后一次事件,利用定时器和清除定时器实现 ### throttle(节流) 在一段时间内连续触发的事件只执行一次,n断时间执行n次