面试
文章平均质量分 90
秃如其来的秃头
种一棵树最佳时间是十年前,其次是现在!
如果一直躲在舒适区,最终一定会进入恐慌区。
展开
-
JavaScript深入之继承的多种方式和优缺点
JavaScript深入之继承的多种方式和优缺点对象得原型JS当中每个对象都有一个特殊的内置属性[[prototype]],这个特殊的对象可以指向另外一个对象当我们通过引用对象的属性 key 来获取一个 value 时,它会触发 [[Get]]的操作这个操作会首先检查该属性是否有对应的属性,如果有的话就使用它如果对象中没有改属性,那么会访问对象的 [[prototype]] 内置属性指向的对象上的属性那么如果通过字面量直接创建一个对象,这个对象也会有这样的属性吗?如果有,应该如何获取原创 2022-01-13 10:36:52 · 398 阅读 · 0 评论 -
浏览器缓存机制
浏览器缓存机制缓存位置从缓存位置上来说分为四种,并且各自有优先级,当依次查找缓存且都没有命中的时候,才会去请求网络Service WorkerMemory Cache内存缓存Disk Cache硬盘缓存Push Cache网络请求Memory Cache内存中的缓存,但是内存缓存虽然读取高效,可是缓存持续性很短,会随着进程的释放而释放。 一旦我们关闭 Tab 页面,内存中的缓存也就被释放了。Disk CacheDisk Cache 也就是存储在硬盘中的缓存,读取速度原创 2021-11-24 12:00:29 · 1479 阅读 · 0 评论 -
JS函数式编程
JS函数式编程实现 call第一版Function.prototype.mycall = function(){ // 1. 获取需要被执行的函数 foo.mycall 这里的 this 就是 foo 该函数 let fn = this console.log('Function=>',this) fn()}// 测试用例function foo(){ console.log('foo=>',this)}foo.mycall()原创 2021-10-28 17:21:49 · 624 阅读 · 0 评论 -
JS执行过程、词法作用域、执行上下文、深入变量对象、作用域链
JS执行过程、词法作用域、执行上下文、深入变量对象、作用域链JavaScript深入系列作用域作用域是指程序源代码中定义变量的区域作用域规定了如何查找变量,也就是确定当前执行代码对变量的访问权限JS采用词法作用域(lexical scoping),也就是静态作用域静态作用域与动态作用域JS采用的是词法作用域,函数的作用域在定义函数定义的时候就决定了 --重点而与词法作用域相对的是动态作用域,函数的作用域是在函数调用的时候才决定的。var scope = "global scope";f原创 2021-10-23 17:26:23 · 204 阅读 · 0 评论 -
JavaScript版数据结构与算法-链表
JavaScript版数据结构与算法-链表链表多个元素组成的列表元素存储不连续,用next指针连在一起链表 VS 数组**数组:**增删非首尾元素时往往需要移动元素**链表:**增删非首尾元素,不需要移动元素,只需要更改next的指向即可js的链表js中是没有链表可以用Object模拟链表const a = { val : 'a'}const b = { val : 'b'}const c = { val : 'c'}const d = { val : 'd'}a.原创 2021-01-09 15:25:17 · 292 阅读 · 0 评论 -
Clean Code JavaScript 代码规范以及建议
Clean Code JavaScript 代码规范以及建议Clean Code JavaScript 英文原版代码整洁之道中文版代码整洁之道中文版默认实参通常比短路更简洁。请注意,如果您使用它们,您的函数将只为未定义的参数提供默认值。其他“假”值,如''、""、false、null、0和NaN,将不会被默认值替换。Bad:function createMicrobrewery(name) { const breweryName = name || "Hipster Brew Co.";原创 2020-12-16 13:58:22 · 425 阅读 · 0 评论 -
【建议收藏】Git操作与命令看这篇足矣
【建议收藏】Git操作与命令看这篇足矣一、创建与合并分支1、 从master分支创建dev分支并切换到dev分支git checkout mastergit checkout -b dev其中,git checkout -b dev 等价于:git branch devgit checkout dev(1)git branch查看本地当前的分支,分支前面带“*”表示当前分支,...原创 2019-11-22 11:28:25 · 138 阅读 · 0 评论 -
Js千分位格式化金额数字的方法
Js千分位格式化金额数字的方法应用场景:在比较大小的时候,金额的千分位格式需要去掉,才能比较大小!1.添加千分位function fmoney(s, n) { n = n > 0 && n < = 20 ? n : 2; s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed...原创 2019-11-21 17:35:36 · 380 阅读 · 0 评论 -
JS 基础小题
JS 基础小题const shape = { radius: 10, diameter() { return this.radius * 2 }, perimeter: () => 2 * Math.PI * this.radius}shape.diameter()shape.perimeter()// B: 20 and NaN注:对于箭头函数...原创 2019-11-05 20:43:50 · 212 阅读 · 0 评论 -
数组扁平化
数组扁平化// 编写一个程序,将数组扁平化,并去除其中重复部分数据,// 最终得到一个升序而且不重复的数组let arr = [1,2,3,[4,5,6,7],[1,23,5,[1,2,3,45,5]],10]//方法一://使用 ES6 中提供的 Array.prototype.flat 处理//然后在使用 set 方法去除重复项arr = arr.flat(Infinity)...原创 2019-10-29 14:57:31 · 132 阅读 · 0 评论 -
深入javascript之原型和原型链
JS原型链你是如何理解原型 和原型链得?把所有对象共用得属性放在一个堆内存对象上(共用属性组成得对象),然后让每一个对象得_propto_ 存储这个【共用属性组成得对象】得地址,而这个公用属性就是原型原型得出现就是为了减少不必要得内存消耗,而原型链就是对象通过__proto__向当前实例所属类得原型上查找属性或方法得hi之,如果找到 Object 得原型上还是没有找到想要得属性或者方...原创 2019-10-28 21:09:14 · 258 阅读 · 0 评论 -
Vue生命周期
Vue生命周期生命周期的应用场景和函数式组件创建阶段beforeCreate : 初始化事件和生命周期 数据观测、属性、侦听器配置等create : 模板编译到renderbeforeMount ====== > rendermounted : 异步请求、操作DOM、定时器等更新阶段beforeUpdate : 依赖数据改变或 $forceUpdate ...原创 2019-10-28 21:01:54 · 361 阅读 · 0 评论 -
前端JS面试题总结
前端JS面试题总结你是如何理解原型 和原型链得?把所有对象共用得属性放在一个堆内存对象上(共用属性组成得对象),然后让每一个对象得_propto_ 存储这个【共用属性组成得对象】得地址,而这个公用属性就是原型原型得出现就是为了减少不必要得内存消耗,而原型链就是对象通过__proto__向当前实例所属类得原型上查找属性或方法得hi之,如果找到 Object 得原型上还是没有找到想要得属性或者...原创 2019-10-28 13:29:43 · 552 阅读 · 0 评论 -
BFC的作用及使用场景
BFC的作用及原理常见布局模式1、流动模型(Flow)自上而下按顺序垂直延伸分布从左到右水平分布显示2、浮动模型3、层模型层模型有三种形式:1、相对定位(position: relative)2、绝对定位(position: absolute)3、固定定位(position: fixed)BFC的基本概念BFC(Block formatting...原创 2019-10-19 15:26:06 · 371 阅读 · 0 评论 -
call、apply、bind作用、实现及详解
call、apply、bind作用、实现及详解它们有什么不同?怎么用?call 接收多个参数,第一个为函数上下文也就是this.后边参数为函数本身的参数let obj ={ name:'小猪头'}function printName(firstName, lastName,flag){ console.log(this) console.log(`第一个名字${firstNa...原创 2019-10-16 16:56:59 · 201 阅读 · 0 评论 -
React-生命周期
React-生命周期组件生命周期的三个阶段Mounting(加载阶段)Updating(更新阶段)Unmounting(卸载阶段)先来介绍一个生命周期的定义:componentWillMount(){}// Mounting 安装阶段 // 在客户端和服务器上,在初始渲染发生之前立即调用一次 如果在这个方法中调用setState,// render()将看到更新的状态,...原创 2019-10-15 15:22:33 · 108 阅读 · 0 评论 -
前端 ES6知识点总结
前端 ES6知识点总结ES6变量的解构赋值数组的解构赋值:简单的数组解构:let [a,b,c] = [1,2,3] //从数组中提取值,按照位置的对象关系对变量赋值。数组模式和赋值模式统一:let [a,[b,c],d]=[1,[2,3],4];//简单的理解为等号左边和等号右边的形式要统一,如果等号两边形式不一样,很可能获得undefined或者直接报错...原创 2019-10-15 14:40:20 · 242 阅读 · 0 评论 -
getDerivedStateFromProps 新的生命周期过程
getDerivedStateFromProps 新的生命周期过程先来看看最新版本react的生命周期图:getDerivedStateFromPropsReact生命周期的命名一直都是非常语义化的,这个生命周期的意思就是从props中获取state,可以说是太简单易懂了。可以说,这个生命周期的功能实际上就是将传入的props映射到state上面。由于16.4的修改,这个函数会在每次re...转载 2019-10-14 17:38:23 · 521 阅读 · 0 评论 -
JS数组去重的多种方法
JS数组去重的多种方法解决方案:1、依次拿出数组中的每一项(排除最后一项,最后一项后面没有需要比较的内容)2、和当前拿出项后面的每一项依次比较3、如果发现有重复的,我们把找到的这个重复向在原有数组中删除掉方案一:双重for 循环var ary = [1,2,3,2,2,7,9,2,3,5,2,8]for(var i =0; i<ary.length-1;i++){ for(...原创 2019-08-20 16:03:22 · 109 阅读 · 0 评论 -
JS变量类型和计算(前端面试题)
JS变量类型和计算(前端面试题)**问题一:**JS中使用typeof能得到的类型typeof undefined // undefinedtypeof 'abc' // stringtypeof 123 //numbertypeof true // booleantypeof {} // objecttypeof [] // objecttypeof null //...原创 2019-08-27 22:07:56 · 105 阅读 · 0 评论 -
JS原型及其原型链(知识点及其面试题)
JS原型及其原型链(知识点及其面试题)构造函数//构造函数名 首位大写function Foo(name,age){ this.name = name this.age = age this.class = 'class01' //return this //默认执行这一行}//当new 这个函数执行的时候 this 变成空对象var f = new Foo('小明',25...原创 2019-08-27 23:55:24 · 2269 阅读 · 0 评论 -
模仿jQuery css及each实现基本功能
模仿jQuery css及each实现基本功能jQuery - css() 方法css() 方法设置或返回被选元素的一个或多个样式属性。返回 CSS 属性$("p").css("background-color");设置 CSS 属性$("p").css("background-color","yellow");设置多个 CSS 属性$("p").css({...原创 2019-09-03 16:41:50 · 281 阅读 · 0 评论 -
JS事件传播机制
事件的传播机制什么是事件?【DOM事件】事件就是一件事情或者一个行为(对于元素来说,他的很多事件都是天生自带的),只要我们去操作这个元素,就会触发这些行为事件绑定:给元素天生自带的事件行为绑定方法,当事件触发,会把对应的方法执行 oBox.onclick = function(){}冒泡传播:触发当前元素的某一个事件行为,不仅当前元素事件行为触发,而且其祖先元素的相关事件行...原创 2019-09-04 15:13:09 · 164 阅读 · 0 评论 -
HTTP 方法:GET 对比 POST
HTTP 方法:GET 对比 POST什么是 HTTP?超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信。两种 HTTP 请求方法:GET 和 POST在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。GET - 从指定的资源请求数据。POST - 向指定的资源提交要被处理的数据GET 方法请注意,查询字符串(...原创 2019-09-08 22:20:56 · 94 阅读 · 0 评论 -
JS数组及其方法(一)
JS数组及其方法join()Array.join()方法将数组中所有元素都转化为字符串并连接在一起.返回最后生成的字符串。可以指定一个可选的宇符串在生成的字符申中来分隔数组的各个元素.如果不指定分隔符,默认使用逗号。如以下代码所示:Array.join()方法是String.split()方法的逆向操作,后者是将字符串分割成若干块来创建一个数组。reverse()Array. re...原创 2019-09-30 11:17:48 · 252 阅读 · 0 评论 -
ES5中的数组方法(二)
forEach()forEach()方法从头至尾遍历数组,为每个元素调用指定的函数。如上所述.传递的函数作为forEach()的第一个参数。然后forEach()使用三个参数调用该函数:数组元素、元素的索引和数组本身。如果只关心数组元紊的值,可以编写只有一个参数的函数—额外的参数将忽略:注意,forEach()无法在所有元紊都传递给调用的函数之前终止通历。也就是说,没有像for循环中使用的相...原创 2019-09-30 11:40:05 · 89 阅读 · 0 评论 -
JS查找上级作用域
查找上级作用域当前函数执行,形成一个私有作用域A,A的上级作用域是谁,和他在哪执行的没有关系,和他在哪创建(定义)的有关系,在哪创建的,它的上级作用域就是谁var a = 12;function fn() { //=>arguments:实参集合 //=>arguments.callee:函数本身FN //=>arguments.callee.c...原创 2019-08-23 23:55:46 · 349 阅读 · 0 评论