JS三大核心,window对象的核心方法

JavaScript018

JS三大核心,window对象的核心方法,第1张

三大核心:

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(立即表达函数)为每个迭代生成一个新的作用域,将外部变量的值传递进去并被引用(阻止垃圾回收机制回收),使得每个回调函数都能访问到正确值的变量。

戳此传送门