![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JavaScript
一些JavaScript学习道路上的总结
代码写的完嘛
这个作者很懒,什么都没留下…
展开
-
前端安全性
XSS攻击 存储型XSS 反射型XSS DOM型XSS原创 2020-03-12 12:39:08 · 135 阅读 · 0 评论 -
前端性能优化
如何做到前端性能优化 减少HTTP请求 合理设置浏览器的缓存 合并CSS的图片(CSS雪碧图/精灵图) 优化加载资源 使用CDN优化静态资源 静态资源合并压缩 前端资源打包 使用webpack等打包工具将Js文件、CSS文件进行打包处理 渲染优化 CSS放在head区,Js放在body后 减少DOM操作,添加事件委托。 事件节流 图片懒加载 不使用iframe ...原创 2020-03-05 22:02:38 · 330 阅读 · 0 评论 -
跨域
同源策略 浏览器处于安全考虑,只允许相同协议,相同域名,相同端口之间的进程才能发起Ajax请求。 CORS Cross-Origin-Resourse-Sharing 跨域资源共享 JSONP 填充式JSON 利用<script>没有同源策略的限制,通过<script>指向要访问的地址,并提供回调函数来接受通讯。 Nginx代理 H5新增PostMessage docume...原创 2020-03-05 10:41:22 · 154 阅读 · 0 评论 -
一些Js的手写
手写Object.create()原创 2020-03-03 21:44:07 · 200 阅读 · 0 评论 -
Js的的运行机制
Js单线程 浏览器脚本语言,用于和用户互动,操作DOM。 若是多线程将会复杂,一个DOM节点写入,另一个删除,将会产生混乱。 Js单线程实现异步 Js异步的原因,防止"卡住" 同步与异步的例子 console.log(1) setTimeout(()=>{console.log(2)}) console.log(3) //1,3,2 其中setTimeout()也就是异步代码 常见的异...原创 2020-03-02 22:33:44 · 283 阅读 · 0 评论 -
Js一些问题
async和defer的区别 都是<script>的可选属性,针对外部脚本 纯<script> 渲染DOM树时阻塞,等script加载完成和执行后继续渲染 async 异步加载,加载完成后立即执行 defer 异步加载,加载完成后不立即执行,等DOM渲染完成后执行 常见数组API 判断数组类型 isArray(),instanceof,Object.prototyp...原创 2020-03-02 17:58:07 · 95 阅读 · 0 评论 -
DOM的重绘和重排
为什么操作DOM速度慢 浏览器中JavaScript和DOM分开执行 Chrome中Js由V8引擎执行,DOM由Webkit内核的WebCore渲染 Safari中Js由JavaScriptCore渲染,DOM由Webkit内核的WebCore渲染 回流一定重绘,重绘不一定回流 回流 浏览器流式布局,DOM节点树形结构,一个节点改变,整个DOM结构重新计算,引发回流。 触发条件: 首次渲染 改变...原创 2020-03-01 21:34:28 · 500 阅读 · 0 评论 -
区分bind,apply,call
JavaScript的this指向 Js,函数的调用方式决定this的值 function f1(){ console.log(this) } f1() // window bind,apply,call可以更改this的指向 call() call()第一个参数是指向的对象,当为null或undefined时指向window;第二个是传递的参数(任意类型) function f1(){ c...原创 2020-02-29 22:46:12 · 78 阅读 · 0 评论 -
JavaScript变量与函数
全局变量的声明 全局变量的声明 var声明全局变量 在函数体外部使用var声明全局变量,在函数体内部使用var声明的为局部变量。 var age= 5//全局变量 function test(){ var myAge = 1;//局部变量 } 直接声明 不使用var的变量,无论位置在何处均为全局变量 age = 5//全局变量 function test(){ myAge = 1...原创 2020-02-29 17:51:33 · 139 阅读 · 0 评论 -
Js中的垃圾回收
Js垃圾回收 概念:找出不在继续使用的变量,释放其内存,避免内存泄露。 垃圾的解读:不被引用的变量以及引用成环的变量 标记清除 将内存中所有变量标记,去掉环境中的变量及被环境中变量引用的标记,然后清除所有标记的变量。 标记的方式:特殊位反转/维护变量列表 引用计数 跟踪变量的引用次数,声明变量+1,将变量赋给引用类型+1,取其他值则-1.当引用次数为0时,清除。 弊端,循环引用无法解...原创 2020-02-29 15:48:25 · 135 阅读 · 0 评论 -
Js如何遍历一个对象
遍历自身可枚举的属性 for in可遍历自身可枚举的属性以及继承得到的属性 Object.keys(),Object.values(),Object.entries(),遍历自身可枚举的,只属于自身(非继承)的来的属性,数值,和键值对。 传统for in 和 for of遍历 区别:for of遍历对象的实际值,for in遍历对象的可枚举属性 ES6新增 迭代器iterable,拥有next...原创 2020-02-26 19:16:04 · 836 阅读 · 0 评论 -
Js面向对象
Js中通过new创建一个对象时发生了什么 创建一个新的对象 将构造函数的作用赋给创建的新对象(将this指向新对象) 执行构造函数中的代码,为新创建的对象赋属性和方法 返回创建的对象 ...原创 2020-02-26 18:05:33 · 113 阅读 · 0 评论 -
JavaScript中的堆和栈
前言 上一篇文章中谈了谈JavaScript中基本数据类型和引用类型的区别。下面从操作系统的内存角度理解基本数据类型和引用类型在操作系统堆和栈中存放的差别。 堆和栈 堆内存 堆内存动态变化,内存大小不一,不会自动释放。 JavaScript中,引用类型Object,Array,RegExp,Data等或通过new运算符得到的变量,其实际数值等存储在堆中。但引用的地址指针存储在栈中。在获取引用类...原创 2020-02-24 20:35:13 · 131 阅读 · 0 评论 -
关于JavaScript的数据类型
基本数据类型 Undefined 声明后并未赋值的变量为undefined typeof未声明的变量同样返回undefined Null undefined派生自null因此null == undefined Boolean 只有两个字面值true和false Number Js使用IEE754双精度记录浮点数,只保留小数点后17位。因此0.1+0.2==0.3 ;//false N...原创 2020-02-24 19:00:33 · 84 阅读 · 0 评论