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
javaScript 琐碎相关推荐
- 关于Javascript的内存泄漏问题的整理稿
常规循环引用内存泄漏和Closure内存泄漏 要了解javascript的内存泄漏问题,首先要了解的就是javascript的GC原理. 我记得原来在犀牛书<JavaScript: The De ...
- javascript 代码_如何使您JavaScript代码保持简单并提高其可读性
javascript 代码 by Leonardo Lima 莱昂纳多·利马(Leonardo Lima) 如何使您JavaScript代码保持简单并提高其可读性 (How to keep your ...
- 轻量函数式 JavaScript:八、列表操作
你在前一章闭包/对象的兔子洞中玩儿的开心吗?欢迎回来! 如果你能做很赞的事情,那就反复做. 我们在本书先前的部分已经看到了对一些工具的简要引用,现在我们要非常仔细地看看它们,它们是 map(..).f ...
- 好程序员Java教程分享JavaScript面试问题及答案(一)
好程序员Java教程分享JavaScript面试问题及答案(一) 1.使用 typeof bar === "object" 来确定 bar 是否是对象的潜在陷阱是什么?如何避免这个 ...
- 如何混淆(保护)JavaScript? [关闭]
已关闭 . 这个问题需要更加 集中 . 它当前不接受答案. 想改善这个问题吗? 更新问题,使其仅通过编辑此帖子来关注一个问题. 5年前关闭. 我想制作一个非开源的JavaScript应用程序,因此我想 ...
- 前端必备,JavaScript面试问题及答案
前端必备,JavaScript面试问题及答案 1.使用 typeof bar === "object" 来确定 bar 是否是对象的潜在陷阱是什么?如何避免这个陷阱? 尽管 typ ...
- 如何成为一个伟大的 JavaScript 程序员
这篇文章主要概述在我5年工作经验的基础上,我成为优秀JavaScript开发人员所使用的技术和资源. 当前大多数Web开发人员面临着这样一个共同的问题:他们必须在多个不同的领域领先于他人--从数据库到 ...
- html+css+javascript之间的关系与作用
三者间的关系 一个基本的网站包含很多个网页,一个网页由html, css和javascript组成. html是主体,装载各种dom元素:css用来装饰dom元素:javascript控制dom元素. ...
- 开始研究JavaScript
JavaScript最为网页中的应用语言,对一些简单的小功能来说非常重要.我近期利用 琐碎的时间来完成它的学习. http://www.ijavascript.cn/ 转载于:https://blog ...
- Some Essential JavaScript Questions And Answers(5)
Some Essential JavaScript Questions And Answers Question 9: Discuss possible ways to write a functio ...
最新文章
- 即时编译和提前编译_即时编译说明
- LeetCode Weekly Contest 27
- java 签名 apk mac_java 方法签名
- c++ primer学习笔记(2)-c++基本数据类型
- PHP基础--mySQL数据库
- 自动打开WINDWOS远程控制的注册表文件
- 趣学python编程第六章答案_Python核心编程-第六章-习题
- jvm类加载机制_JVM 类加载机制
- GridView 中设置某列,截取字符串加... 和 鼠标放上去字符全部显示
- 太快了,太变态了:什么会影响Java中的方法调用性能?
- nodejs图片读取
- 全栈python_Pyodide:在浏览器端实现Python全栈科学计算
- mysql case默认_linux下安装mysql
- Iterables和迭代器
- 一台linux服务器配置多个tomcat应用
- Linux系统管理--Centos6服务管理
- matlab模糊聚类分析画树状图,Matlab笔记模糊聚类分析原理及实现
- html控制手机回退键,向日葵手机控制手机全程指导
- luci开发小插件_luci框架-LUA的一个web框架使用
- 牛客:爬塔(STL)
热门文章
- dnw linux 内核,神器DNW2 FOR LINUX!
- Spring DI和AOP简介(一)
- 10、私网与公网的转换---NAT网络地址转换技术
- 约瑟夫问题(小小算法,真不可笑)
- PHP 互亿无线语音通知
- Hibernate(9)_多对一的关联映射
- 新个人所得税计算公式
- 迅捷路由器服务器未响应,迅捷(FAST)路由器无法登陆falogin.cn解决办法 | 192.168.1.1登陆页面...
- mysql 1138_mysql ERROR 1138: Invalid use of NULL value
- 七大黄金定律与产品设计