闭包的理解

  (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

javaScript 琐碎相关推荐

  1. 关于Javascript的内存泄漏问题的整理稿

    常规循环引用内存泄漏和Closure内存泄漏 要了解javascript的内存泄漏问题,首先要了解的就是javascript的GC原理. 我记得原来在犀牛书<JavaScript: The De ...

  2. javascript 代码_如何使您JavaScript代码保持简单并提高其可读性

    javascript 代码 by Leonardo Lima 莱昂纳多·利马(Leonardo Lima) 如何使您JavaScript代码保持简单并提高其可读性 (How to keep your ...

  3. 轻量函数式 JavaScript:八、列表操作

    你在前一章闭包/对象的兔子洞中玩儿的开心吗?欢迎回来! 如果你能做很赞的事情,那就反复做. 我们在本书先前的部分已经看到了对一些工具的简要引用,现在我们要非常仔细地看看它们,它们是 map(..).f ...

  4. 好程序员Java教程分享JavaScript面试问题及答案(一)

    好程序员Java教程分享JavaScript面试问题及答案(一) 1.使用 typeof bar === "object" 来确定 bar 是否是对象的潜在陷阱是什么?如何避免这个 ...

  5. 如何混淆(保护)JavaScript? [关闭]

    已关闭 . 这个问题需要更加 集中 . 它当前不接受答案. 想改善这个问题吗? 更新问题,使其仅通过编辑此帖子来关注一个问题. 5年前关闭. 我想制作一个非开源的JavaScript应用程序,因此我想 ...

  6. 前端必备,JavaScript面试问题及答案

    前端必备,JavaScript面试问题及答案 1.使用 typeof bar === "object" 来确定 bar 是否是对象的潜在陷阱是什么?如何避免这个陷阱? 尽管 typ ...

  7. 如何成为一个伟大的 JavaScript 程序员

    这篇文章主要概述在我5年工作经验的基础上,我成为优秀JavaScript开发人员所使用的技术和资源. 当前大多数Web开发人员面临着这样一个共同的问题:他们必须在多个不同的领域领先于他人--从数据库到 ...

  8. html+css+javascript之间的关系与作用

    三者间的关系 一个基本的网站包含很多个网页,一个网页由html, css和javascript组成. html是主体,装载各种dom元素:css用来装饰dom元素:javascript控制dom元素. ...

  9. 开始研究JavaScript

    JavaScript最为网页中的应用语言,对一些简单的小功能来说非常重要.我近期利用 琐碎的时间来完成它的学习. http://www.ijavascript.cn/ 转载于:https://blog ...

  10. Some Essential JavaScript Questions And Answers(5)

    Some Essential JavaScript Questions And Answers Question 9: Discuss possible ways to write a functio ...

最新文章

  1. 即时编译和提前编译_即时编译说明
  2. LeetCode Weekly Contest 27
  3. java 签名 apk mac_java 方法签名
  4. c++ primer学习笔记(2)-c++基本数据类型
  5. PHP基础--mySQL数据库
  6. 自动打开WINDWOS远程控制的注册表文件
  7. 趣学python编程第六章答案_Python核心编程-第六章-习题
  8. jvm类加载机制_JVM 类加载机制
  9. GridView 中设置某列,截取字符串加... 和 鼠标放上去字符全部显示
  10. 太快了,太变态了:什么会影响Java中的方法调用性能?
  11. nodejs图片读取
  12. 全栈python_Pyodide:在浏览器端实现Python全栈科学计算
  13. mysql case默认_linux下安装mysql
  14. Iterables和迭代器
  15. 一台linux服务器配置多个tomcat应用
  16. Linux系统管理--Centos6服务管理
  17. matlab模糊聚类分析画树状图,Matlab笔记模糊聚类分析原理及实现
  18. html控制手机回退键,向日葵手机控制手机全程指导
  19. luci开发小插件_luci框架-LUA的一个web框架使用
  20. 牛客:爬塔(STL)

热门文章

  1. dnw linux 内核,神器DNW2 FOR LINUX!
  2. Spring DI和AOP简介(一)
  3. 10、私网与公网的转换---NAT网络地址转换技术
  4. 约瑟夫问题(小小算法,真不可笑)
  5. PHP 互亿无线语音通知
  6. Hibernate(9)_多对一的关联映射
  7. 新个人所得税计算公式
  8. 迅捷路由器服务器未响应,迅捷(FAST)路由器无法登陆falogin.cn解决办法 | 192.168.1.1登陆页面...
  9. mysql 1138_mysql ERROR 1138: Invalid use of NULL value
  10. 七大黄金定律与产品设计