函数柯里化实现
柯里化(Currying)是一种关于函数的高阶技术。它不仅被用于 JavaScript,还被用于其他编程语言。 柯里化是一种函数的转换,它是指将一个函数从可调用的 f(a, b, c) 转换为可调用的 f(a)(b)(c)。 柯里化不会调用函数。它只是对函数进行转换。 // 功能: 传入一个函数 将该函数自动柯里化 /** * @param {Function} fn */ function currying(fn) { //返回柯里化后的函数 //此函数可接受部分参数 return function curryed(...args) ...
函数防抖(debounce)的实现
What is 防抖? 在事件触发n秒后再执行回调,如果在这n秒期间又被触发,则重新记时,也就是说在n秒之内只执行最后一次触发 执行过程 当事件触发时,相应的函数不会立即触发,而是会等待一定的时间 当事件密集触发时,函数的触发将会频繁重置延迟 只有延迟时间内再无任何事件触发,才会执行真正的响应函数 <img src="https://docs.hgyn23.cn/static/a426833e5d485957c71ee7c5a7870856" width="600px" height="auto" alt="a426833e5d485957c71ee7c5a78...
call\apply\bind实现原理解析
fn.call方法原理 Function.prototype.v2call = function (thisArg, ...args) { //目的:将传入的thisArg对象作为调用v2call的函数的this指向 //使用fn变量存储this 此时fn指向调用v2call的函数对象 这里是foo var fn = this; //边界判断 如果不为空 将原始字面量转化为实例对象 否则thisArg指向window thisArg = thisArg ? Object(thisArg) : window; //thisArg新增...
Vuejs使用watch侦听器侦听数据时遇到的一系列问题
执行顺序的问题 侦听子组件中获取的数据 在data中初始化一个变量,并在watch中侦听,在methods中发起异步请求前将数据赋值给这个变量时,watch中触发的回调函数和methods中等待异步执行完毕前还未执行的代码谁会先执行? 等待methods异步执行完毕,继续执行还未执行的代码,然后执行监听器中的回调函数。 父组件获取数据,传递给子组件 父组件中的data初始化一个变量,通过异步请求获取数据赋给该变量并传递给子组件,子组件中使用watch进行侦听,代码谁先执行? `继续执行父组件还未执行的代码,执行完后按顺序被子组件中的watch侦听到并执...
浏览器中键入网址再按下回车,发生了啥?
摘要: 一道经典的面试题,涵盖的知识点非常多,有必要探寻下该问题,对知识体系进行梳理。
系统层 发起http请求,解析域名 DNS Chrome搜索自身DNS缓存。chrome输入chrome://net-internals/#dns可查看 搜索操作系统自身DNS缓存 读取本地HOST文件 以上都查询不到时,浏览器发送一个DNS的系统调用,DNS请求到达宽带运营商服务器。 宽带运营商服务器查询自身缓存 没查询时,发起一个迭代(顶级域--次级域名--...)的DNS解析请求,直到获取到域名对应的...
前端站点部署流程
今天把服务器玩崩了 重装了一下 顺便过了一下部署站点的流程 以此记录 日后再次部署可加快效率 更新软件包 确保 apt-get 安装最新版本的软件包 sudo apt update Git 安装和配置 安装 sudo apt-get install git 配置 配置git用户名和邮箱: git config --global user.name "Your Name" git config --global user.email "youremail@yourdomain.com" 验证配置: ...
Vuejs搭建Server-render项目简要流程
概要 Vue.js Vue.js是构建客户端程序的框架,默认情况下,Vue.js可以在浏览器输出vue组件,并进行生成和操作DOM。 服务端渲染 服务端渲染(Server-Side Rendering),是指由服务侧完成页面的 HTML 结构拼接的页面处理技术,发送到浏览器,然后为其绑定状态与事件,成为完全可交互页面的过程。 与客户端渲染的区别 两张图说明 来方便动态添加路由了。 addRoutes (routes: RouteConfig[]): void; //动态添加更多的路由规则。参数必须是一个符合 routes 选项要求的数组。 先介绍下实现侧边栏动态渲染的大致方式: 在router.js中配置静态路由表: export const constantRouterMap = [{ path: '/logi...