javaScript 琐碎

闭包的理解

  (1)、闭包的概念: 简单理解就是定义在一个函数内部的函数,内部函数持有外部函数内变量的引用;

  (2)、闭包的优点:

    1)、读取函数内部的变量;2)、方便调用上下文的局部变量,利于函数封装;

  (3)、闭包的缺点:

    1)、由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所有已不能滥用闭包,否则会造成网页性能的问题,在 IE 中可能导致内存泄漏的问题;解决的办法是,在退出之前,将不使用的局部变量全部删掉;

    2)、闭包会在父函数外部,改变父函数内部变量的值;

  

new 一个对象的过程中发生了什么?

  (1)、创建一个空对象;

  (2)、设置新对象的 constructor 属性为构造函数的名称,设置新对象的 __proto__属性指向构造杉树的 prototype;

  (3)、使用新对象调用函数,函数中的 this 被指向新实例对象;

  (4)、将初始化完毕的新对象地址,保存到等号左边的变量中;  

 

js 原型和原型链

  简单的来讲,原型其实就是对象Object或者引用类型的 prototype 属性;当我们访问一个对象的属性的时候,如果对象里没有这个属性的时候,那么他就回去 prototype 中去寻找,如果 prototype 中没有的话,就会接着再 prototype 中的 prototype 中去寻找,这个寻找的链路就是原型链;

  javaScript 的对象是通过引用类型来传递的,我们创建的每个新对象实体中并没有一份属于自己的原型副本,当我们修改原型时,与之相关的对象也会继承这一改变;当我们需要获取一个属性的值的时候,javaScript 引擎会先在当前对象中寻找,如果找不到的话就会去的 prototype 中寻找,并逐级递推;

 

set 数据结构

  set 是 es6 中新添加的数据结构,类似于伪数组,但是这种结构中的所有成员都是唯一的;可以通过 Affay.from 转换成真是的数组;

  set 结构虽然是一种类似数组的结构数据,但是要想获取它的长度,不能使用 length 属性,要用 size 属性;

  除了 size 属性外,set 数据还具有 keys、values、entries、forEach 方法;而且还具有 add、has、delete、clear 等方法;

    add:添加某个值,返回 Set 结构本身;

    has:返回一个布尔值,检测是否是 Set 数据的成员;

    delete:删除某个值,返回一个布尔值,表示删除是否成功;

    clear:清除所有的成员,没有返回值;

  

map 数据结构

  map 数据结构是 es6 新增的 key--value 类型的数据结构;其中的 key 和 value 可以是任意的值;

  在 javaScript 中 NaN  != NaN ;但是在 map 数据结构中,如果 键是 NaN 的话,则多个 NaN 指向的同一个键;

  map 数据的创建:

    方法一: let map = new Map()   map.set('a', 1)

    方法二:let map = new Map([['a', 1]])

  同样的要想获取 map 数据结构的键的长度是不能用 length 属性的,要用 size 属性;

  map 结构数据具有的方法:clear、delete、entries、get、keys、has、set、values、forEach;

  需要注意的是 map 结构并不是一种真实的对象,并不能通过 obj.key 去拿到键值,

  map 和 对象的对比:

    1)、通常对象都是有自己的原型的,但是 es5 开始可以通过 Object.create(null) 来创建一个没有原型的对象;

    2)、对象的键只能是字符串或者 symboles;但是 map 结构数据的键可以是任意值;

    3)、map 结构的数据可以通过 size 来获取键的个数,但是对象只能通过遍历去计算获取;

 

import && require 的区别

  require 的基本语法:在导出的文件中定义 module.export ,导出的对象的类型不予限制,可以是任何类型:对象,字符串,变量,方法等;在引入的文件中调用 require() 方法引入对象即可;

  import 的基本语法:导出的对象必须与模块中的值一一对应,也就是导出的对象与整个模块进行结构赋值;

  import 和 require 的区别:

    1)、require 是赋值过程并且是运行时才执行,import 是结构过程并且是编译时执行,require 可以认为是一个全局的方法,所以它设置可以进行一些运算操作,import 必须写在文件的顶部;

    2)、require 的性能相对于 import 稍微低一点,因为 require 是在运行的时候才引入模块并且还赋值给某个变量,而 import 只需要依赖 import 中的接口在编译时引入指定模块所以性能稍微高点;

    3)、在 commom.js 中 module.export 之后,导出的值就不在发生改变了,但是在 es6 的 export 中是可以的;

 

清理缓存的方法

  1)、meta 方法

    <meta http-equiv='pragma' content='no-cache'>

    <meta http-equiv='cache -control' content='no-cache, must-revalidate'>

    <meta http-equiv='expires' content='0'>

  2)、清理 form 表单的临时缓存

    <body onLoad='javascript: document.formname.reset()'>

  3)、用 http head 清理,比如 expires 和 cache-control

转载于:https://www.cnblogs.com/mufc/p/11301971.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值