知识总结

100 阅读2分钟

页面优化有哪些方法

(1)多个css合并,减少HTTP请求
(2)减少DOM元素数量
(3)将JavaScript与css从页面中剥离出来
(4)移除重复脚本
(5)使用恰当的图片格式
(6)提取公共样式,减少代码量
(7)将css文件放到页面最上面
(8)避免使用css表达式
(9)选择器优化嵌套,尽量避免层级过深

call、apply、bind的异同

共同点:call、apply、Bind三者都可以改变this指向,且第一个传递的参数都是this指向的对象。都采取后续传参的形式。
不同点:call传入的参数数量不固定,第一个参数代表函数体内this指向。第二个参数开始往后,每个参数衣次被传入函数。
apply接受两个参数,第一个参数指定了函数体内this对象的指向,第二个参数为一个带下标的集合,这个集合可以为数组,也可以为类数组。
类数组: 1、对象本身可以存取属性;2、对象的length属性可读写。apply函数是直接执行的。
bind传递的参数是与call类型相同,并且bind函数会返回一个新的函数,并不会执行,要调用时才会执行。

什么是闭包

闭包是指一个函数可以访问另一个函数作用域中变量。 闭包简单理解就是内嵌函数,即在函数中嵌套函数。 由于在js 中,变量的作用域属于函数作用域,在函数执行后就会被销毁,内存也会收回,但是闭包是建立在一个函数内部的子函数,可以访问上级作用域,即使函数执行完,作用域也不会被销毁,这时的子函数-----也就是闭包。
缺点:无法收回闭包中引用变量,容易造成内存泄漏。 闭包的常用写法:

<script>
   function bibao(){
      var bibao="aaa";
      return function(){
          console.log(bibao);
      }
   }
   var bag=biao();
   bag();
</script>

闭包的应用:

(1)ajax请求的成功回调
(2)时间绑定的回调方法
(3)setTimeout的延时回调
(4)函数内部返回另一个匿名函数