js 浅拷贝、深拷贝实现梳理

浅拷贝 1. Object.create(Object.getPrototypeOf(prev), Object.getOwnPropertyDescriptors(prev)) (最完美) 2. Object.assign({}, prev) (无法拷贝enumerable=false的属性...

2019-01-04 11:51:19

阅读数 21

评论数 0

阻止浏览器对html的缓存

问题由来:版本更新后,项目打包上线,打包后的js、css等静态资源的名称已变化(打包工具),不必担心它们的缓存,而html文件未改变(如index.html),浏览器仍会使用缓存的html文件,导致各种错误   1. 后端设置get请求的response请求头 response.setDa...

2018-12-20 23:13:32

阅读数 33

评论数 0

js 严格模式

除了正常运行模式,ECMAscript 5添加了第二种运行模式:”严格模式”(strict mode),ES6的模块会自动使用严格模式 严格模式主要有以下限制:  1.变量必须声明后再使用  2.函数的参数不能有同名属性,否则报错  3.不能使用with语句  4.不能对只读属性赋值,否则报错  ...

2018-12-05 14:39:04

阅读数 23

评论数 0

js 执行环境、作用域链和闭包

执行环境: 定义了变量或函数有权访问的其他数据,每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中(如同全局环境下的变量和函数保存在window对象内) 执行环境中的所有代码执行完毕后,该环境被销毁,保存在其中的所有变量和函数定义也随之销毁(全局执行环境直到应...

2018-12-04 17:52:00

阅读数 60

评论数 0

js 元素宽高、位置计算总结

DOM对象 只读属性 clientWidth、clientHeight:指的是元素的可视部分宽度和高度,即padding+content,如果没有滚动条,即为元素设定的高度和宽度,如果出现滚动条,滚动条会遮盖元素的宽高,那么该属性就是其本来宽高减去滚动条的宽高(即不包含border及滚动条宽高...

2018-11-26 14:57:32

阅读数 35

评论数 0

js for循环拆解(解析for setTimeout经典案例)

直接上代码 // 经典案例 for(var i=0;i<3;i++) { setTimeout(function () {console.log(i)}, 0) } // 拆解后 var i = 0; { var t = i; setTimeout(func...

2018-11-19 10:48:17

阅读数 69

评论数 0

js new运行流程

1. 创建一个新对象 2. 将这个新对象的隐式原型指向Class的显式原型 3. 将这个新对象作为this指针的指向,用call/apply调用Constructor 4. 将这个新对象指向 赋值号(=) 左侧的变量 // Demo const man = new Person(); ...

2018-11-13 17:07:56

阅读数 18

评论数 0

history实现页面支持Ajax前进、后退

实现步骤: 每次Ajax请求之后都使用history.pushState(replaceState)将携带参数的记录压入历史记录栈(Ajax请求不刷新页面,也不会自动加入到history) 通过监听window的onPopstate事件,在下次用户进行前进、后退操作时根据state中我们放置的...

2018-11-13 15:33:50

阅读数 17

评论数 0

iframe 相关

1. 设置iframe宽高自适应 const iframe = document.getElementById('file'); iframe.onload = () => { iframe.width= iframe.contentWindow.document...

2018-11-12 16:53:01

阅读数 14

评论数 0

基于Session、Token的身份验证小结

名词:    Cookie 存储在client   Session 会话,存储在server,server需要对session进行定期清理   Token 服务端验证成功后根据一定规则签发的一个‘令牌’,server端每次收到请求都用相同的规则再次生成'令牌'与其对比,而无需存储 验证流程...

2018-11-02 16:56:48

阅读数 86

评论数 0

JavaScript语言精粹-毒瘤、糟粕(应对)

毒瘤 不使用全局变量 使用块级作用域,不var return与返回值要位于同一行,否则当自动插入分号后会返回undefined 当对象的属性名与js保留字相同时,无法使用点语法,使用括号表示法 js字符是16位的,Unicode将一对字符视为一个单一的字符,而js将其认为是两个不同的字符...

2018-10-17 22:17:04

阅读数 53

评论数 0

webpack记录

css/sass...中可以使用 '~@' 访问 'assets'中的文件(都可使用 alias 'src', js中使用 '@',css中使用 '~@',效果与 require('@/assets/')类似)   欢迎关注、点赞

2018-10-08 09:56:51

阅读数 32

评论数 0

前端新技术记录

1. 移动开发 pwa(progressive web app) flutter(移动UI框架) 2. 其他 graphQL(API) relay   欢迎关注、点赞  

2018-10-04 16:38:01

阅读数 57

评论数 0

js Array重点注意记录

1. Array.prototype.fill 当参数为对象(数组)时,该数组中每一项都将指向同一个对象,而并非每次都创建一个新对象,如下 new Array(5).fill({x: 1})        如果需要初始化一个每项都为对象的数组,可使用如下方式: Array.apply(n...

2018-09-29 22:50:06

阅读数 55

评论数 0

js 运算符优先级总结

下面的表将所有运算符按照优先级的不同从高到低排列(来源:MDN) 优先级 运算类型 关联性 运算符 20 圆括号 n/a ( … ) 19 成员访问 从左到右 … . … 需计算的成员访问 从左到右 … [ … ] ...

2018-09-28 22:51:08

阅读数 35

评论数 0

浏览器兼容性问题(IE9+)

HTML/CSS 1. 默认margin、padding不一致 * {margin: 0;padding: 0;} 2. css3的animation IE9不支持 3. display: flex IE9不支持;IE10部分支持,使用display: ms-flexbox...

2018-09-06 20:30:20

阅读数 473

评论数 0

js 函数声明提升和变量提升

1. 函数声明提升 func() function func () { } 上例不会报错,正是因为 ‘函数声明提升’,即将函数声明提升(整体)到作用域顶部(注意是函数声明,不包括函数表达式),实际提升后结果同下: // 函数声明提升 function func () { } func()...

2018-08-06 18:16:42

阅读数 143

评论数 0

js call/apply及类数组对象

call/apply的作用:在特定的作用域中调用函数,设置函数体内this对象的值,以扩充函数的作用域(调用函数的同时设置内部this指针的指向) 一般用法如下: Func.call(context, arg1, arg2, arg3...) Func.apply(context, [ar...

2018-07-18 16:22:25

阅读数 73

评论数 0

跨域问题总结

出现跨域问题原因: 同源策略 什么是同源策略? 1. 协议相同 (http & https) 2. 域名相同 (http://www.a.com & http://www.b.com) 3. 端口相同 (http://www.a.com ...

2018-07-04 11:14:58

阅读数 280

评论数 0

js 事件(绑定、解绑、三个阶段、相关方法)

事件绑定与解绑: DOM0级事件(这类事件可以使用 return false来阻止事件往下执行,包含默认事件) 绑定: html内<inputonclick=''> js中el.onclick='' 解绑: el.onclick = null ...

2018-07-03 15:38:30

阅读数 315

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭