手写面试题
手写call、apply、bind 区别: call 接收多个参数 apply 接收数组 bind 返回函数,不直接调用。能够分两次接收参数。 原理上就是把function挂在target对象上面,通过target.function 的方式,隐式的将执行上下文修改。 ...
手写call、apply、bind 区别: call 接收多个参数 apply 接收数组 bind 返回函数,不直接调用。能够分两次接收参数。 原理上就是把function挂在target对象上面,通过target.function 的方式,隐式的将执行上下文修改。 ...
原型链是JavaScript中实现继承和对象间属性共享的一种机制。 当谈到继承时,JavaScript 只有一种结构:对象。每个实例对象(object)都有一个私有属性(称之为 proto )指向它的构造函数的原型对象(prototype)。该原型对象也有一个自己的原型对象(proto),层层向上直到一个对象的原型对象为 null。根据定义,null 没有原型,并作为这个原型链中的最后一个环节。 ...
大家好。 今天接着研究个人站长探索之博客搭建。 前阵子来了趟西北环线旅行,写了几天游记,并附上几张图,但图片大小不一,也不能占太多空间,就想着要是能有那种点击图片放大查看的功能就好了,找了一圈没找到hugo PaperMod有类似的设置。 ...
给版本号排序 var versions = ['2.0.1', '1.1.0', '1.0.2', '2.0.0', '1.0.0', '3.0.10', '2.1.10', '2.0.0']; versions.sort((a, b) => { const alist = a.split('.'); const blist = b.split('.'); for (let i = 0; i < alist.length; i ++) { if (alist[i] > blist[i]) { return 1; } else if (alist[i] < blist[i]) { return -1; } else { continue; } } return 0; }) sort是怎么实现的 compareFn(a, b) 返回值 排序顺序 > 0 a 在 b 后,如 [b, a] < 0 a 在 b 前,如 [a, b] === 0 保持 a 和 b 原来的顺序 const MySort = function (list, compareFn) { if (!compareFn) throw "compareFn is not a function"; if (list.length <= 1) return list; // null list fn ... const mid = Math.floor(list.length / 2); const midValue = list[mid]; const beforeList = []; const midList = [] const afterList = []; for(let i = 0; i < list.length; i ++) { if ( compareFn(list[i], list[mid]) < 0 ) { beforeList.push(list[i]) } else if ( compareFn(list[i], list[mid]) > 0 ) { afterList.push(list[i]) } else { midList.push(list[i]) } } return [].concat( MySort(beforeList, compareFn), midList, MySort(afterList, compareFn) ) } (别的实现方式) ...
场景:点击按钮下载什么架构的客户端 为啥需要JS判断当前浏览器所属的系统架构?可以代入到场景:如果需要自行分发arm、x86技术架构的客户端安装包(为了控制包大小等),怎么能让用户直接点击下载按钮,下载正确的技术架构,而不是需要用户了解相关内容,查看本机架构呢? ...
三次握手四次挥手 客户端发起请求,携带请求序列号 服务端接收,发送应答,返回请求序列号,携带新的服务序列号 客户端收到应答和对应的请求序列号,发送确认应答,发送数据 序列号保证请求的正确性。接收之后再发送请求,避免超时重复发送。 ...
html.spec.whatwg.org 对属性的描述 The async and defer attributes are boolean attributes that indicate how the script should be evaluated. Classic scripts may specify defer or async, but must not specify either unless the src attribute is present. Module scripts may specify the async attribute, but must not specify the defer attribute. Async 和defer 是用于指示脚本应该怎么被解析的布尔值属性。 对于传统的脚本,除非src属性存在,否则不能指定defer或者async属性。 对于module类型的脚本,可以指定async,但不能指定defer属性。 ...
大家好,今天继续薅jina.ai的羊毛。 起因是有朋友使用kagi搜索能搜出来被墙了的内容,但是没挂梯子,点进去就是404 Not Found,就很尴尬,而且刚好还体验了jinaAI的URL读取功能。 所以产生了这么个薅羊毛的流程:kagi搜索 - 404的地址 - r.jina.ai处理后展示。 ...
第六天:张掖 - 祁连山山顶 - 峨堡 - 岗什卡雪峰 - 海北油菜花 - 西宁机场 - 北京 特种兵的特。因为时间关系,到西宁还能赶上夜晚的航班,就不再停留了,初到西宁夜晚也有浅逛了下大新街夜市,那里有杯甜胚子绿茶很好喝,给当时的我们清爽的感觉。 ...
第五天:敦煌 - 大地之子、无界、汉武大帝 - 瓜州 - 嘉峪关 - 七彩丹霞 - 张掖。 继续早起的一天,已经开始略显疲态,主要是日落时间较晚,吃完收拾完就不早了。 ...