ESMAScript核心语法(标准规范) ->SE6。
BOM 浏览器对象模式,其实就是window对象,该对象可以操作浏览器。
DOM文档对象模型,其实就是document对象,该对象可以操作网页里面的所有元素。
window对象的常用方法:
1.alert()方法,用于打开消息框。
2.prompt()方法,用于打开输入框,输入框返回数据的类型string类型。
3.confirm()方法,用于打开确定框,确认框里面有两个按钮,确定和取消,点击确定按钮返回true,点击取消按钮返回false。
4.parseInt()方法,用于将字符串数据,强转为整型。
5.parseFloat()方法,用于将字符串数据,强转为浮点型。
6.isNaN()方法,用于判断一份数据是不是NaN数据(not a number)。
新的知识点,window对象的常用方法,要熟记,对JavaScript更深一步的了解,继续学习,加油!!!
DOM 的全称是" Document Object Model ",中文意思为“文档对象模型”。
就像 JS 中所有的对象都继承自 Object 一样,浏览器提供一个原生的节点对象 Node (Node 是一个函数), DOM 的所有节点都继承自 Node ,Node 又继承自 Object,因此它们具有一些共同的属性和方法。
一个文档的所有节点,按照所在的层级,可以抽象成一种树状结构。这种树状结构就是 DOM 树。
顶层的 根节点 html 属于 Document 节点,代表整个文档;
第二层级和第三层级的属于 Element 节点,即网页的各种 HTML 标签;
第四层级的属于 Text 节点,即标签之间或标签包含的文本。
页面中的节点,通过上述不同的构造函数,构造出相应的对象。
由此可以看出 DOM 的主要作用 :DOM 是 JavaScript 操作网页的接口,它的作用是将网页转为一个 JavaScript 对象,从而可以用脚本进行各种操作(如增删改查)。
DOM 有自己的国际标准,目前通用版本是 DOM 3。
Node 属性有很多,用到时可以查询文档。
如果一个属性是函数,那么这个属性也叫做 方法 ;即方法是函数属性。
document对象是文档的根节点,window.document属性就指向这个对象。
通过 DOM API 获取到的 elements 都是伪数组。
Element 对象对应网页的 HTML 元素。每一个 HTML 元素在 DOM 树上都会转化成一个 Element 节点对象。
DOM 提供两种节点集合,用于容纳多个节点: NodeList 和 HTMLCollection 。这两种集合都属于接口规范。许多 DOM 属性和方法,返回的结果是 NodeList 实例或 HTMLCollection 实例。
节点对象除了继承 Node 接口以外,还会继承其他接口。
在A函数中嵌套B函数,B函数访问A函数中的变量。将A函数复制给C函数并执行。
那么在大多数的理解中,包括许多著名的书籍,文章里都以函数C的名字代指这里生成的闭包。而在chrome中,则以执行上下文A的函数名代指闭包。
而我的理解是:闭包更准确的说是一项技术或者一个特性:只要运用具备阻止垃圾回收机制回收和突破作用域链限制的技术,就是闭包。像是《JavaScript权威指南》打的比方,像是把变量包裹了起来,形象的称为“闭包”。
如果非要指明哪个函数是闭包的话,我愿意将A函数称为定义闭包的函数,C函数为执行闭包的函数。
a. 在函数内部创建新的函数;
b. 新的函数在执行时,访问了函数的变量对象。
c. 闭包是在函数被调用执行的时候才被确认创建的。
一句话总结:==函数中闭包判定的准则,即执行时是否在内部定义的函数中访问了上层作用域的变量。==
闭包,阻止垃圾回收机制。
闭包,突破作用域链接。
《你不知道的JS中》的示例:
模块模式需要具备两个必要条件:
1.必须有外部的封闭函数,该函数必须至少被调用一次(每次调用都会创建一个新的模块实例)。
2.封闭函数必须返回至少一个内部函数,这样内部函数才能在私有作用域中形成闭包,并且可以访问或者修改私有的状态。
什么时候使用模块模式?
如果必须创建一个对象并一某些数据对其进行初始化,同时还要公开一些能够访问这些私有数据的方法,那么就可以使用模块模式。
哪些地方有用到模块模式?
最典型的就是JQuery库,jQuery和$标识符就是JQuery模块的公共API,但它们本身都是函数(由于函数也是对象,它们本身也可以拥有属性)
以后单独拿一个章节,来具体讲讲现在的模块化和未来的模块化机制。
具体的内容在函数的柯里化的章节中详细分析。
戳此传送门
输出6的原因是:被封闭在一个共享的全局作用域中,实际上只有一个i。
依次输出1-5的原因是:在迭代内部使用IIFE(立即表达函数)为每个迭代生成一个新的作用域,将外部变量的值传递进去并被引用(阻止垃圾回收机制回收),使得每个回调函数都能访问到正确值的变量。
戳此传送门