JS 总结

作者: 贺斯洁Margin | 来源:发表于2019-05-07 13:45 被阅读0次

1. ES6

1.1 变量的声明

变量的声明有三种形式,分别是 varletconst
当使用 var定义的变量,是全局变量,会进行变量提升,可以进行修改 。
当使用let定义的变量,是局部变量(块级作用域),不会进行变量提升,能够进行修改。
当使用 const定义的变量,是局部变量,不会进行变量的提升,不能进行修改。

1.2 模板字符串

使用 ${} 书写模板字符串

1.3 展开符(...)

展开符,可以在函数调用或数组构造时,将数组或字符串在语法层面上展开;或者在构造字面量对象时,将对象表达式按key-value方式展开。

1.4 解构

解构用于将值从数组、属性从对象提取到不同的变量中。
解构可用于函数参数的默认值,以前的做法是在函数内部进行检查赋值,现在可以直接在形参中进行。

1.5 箭头函数

箭头函数的语法比函数表达式更简洁,但是它没有自己的thisargumentssupertarget、。箭头函数适用于需要使用匿名函数的地方。
箭头函数中的 this 指向定义箭头函数的作用域。

1.6 Symbol

ES6 中表明唯一的值。

1.7 模块化

ES6 中的模块化是使用 importexport 两个关键字对模块进行引入和暴露。
node.js 中则是使用 requiremodule.exports 两个关键字进行引入和暴露。

1.8 函数默认值

ES6 中可以直接在函数声明中,形参定义里进行参数的默认值设定。

1.9 异步编程

ES6 中使用 asyncawait 两个关键字进行异步处理,与 Promise 中不同的是,Promise 中的处理函数不需要在定义中书写。
在这之前是使用 Promise 进行异步处理,分为 rejectresolve 以及 pedding 三个状态。

1.10 Class

ES6 中所提供的面向对象编程的封装,可以使用 class 代替之前的类创建步骤。
ES5 中我们使用大写的函数名表示当前函数是一个构造函数,使用 prototype 对其进行方法书写。但是在 ES6 中我们可以直接使用 class 代替它。
基本上,ES6class可以看作只是一个语法糖,它的绝大部分功能,ES5都可以做到,新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。

1.10.1 constructor

constructor 是类的默认方法,当通过new实例化对象时被自动调用。
consturctor方法默认返回实例对象,如果更改的话就无法找到实例对象。

1.10.2 继承

使用extends进行继承。接着在constructor中使用super调用父类的构造函数。
可以在子类中使用super.xxx()调用父类的方法。

1.10.3 类不存在变量提升

1.10.4 静态方法

通过static关键字,可以对类创建静态方法,静态方法默认指向类本身,可以被继承。
静态方法只能通过类直接调用,而不能被实例调用。

1.10.5 实例属性

实例属性可以在constructor中进行赋值,也可以在constructor之前,类的最顶部进行定义或者赋值,这样一眼就可以看出这个类有哪些实例属性。

2. ES5

2.1 原型

所有的函数都有一个默认的原型,可以使用 prototype 进行查找。原型中所拥有的属性和方法,在其对象中都可以使用,不会重复加载以造成过载。
其中构造函数的 prototype属性指向其原型对象,对象的 _proto 指向构造函数。

2.2 &&||

&&的优先级比||更高。 &&遇到false后面就不会再运行了;||遇到true后面就不会再运行了。

2.3 JavaScript事件机制

事件机制即是EventLoop,异步任务分为宏任务与微任务。

3. 笔试题

3.1 如何判断是否为Array

使用Object.prototype.toString.call(arr) == '[object Array]' 进行判断

3.2 合并对象

  • 通过 Object.assign({}, obj, {age: 19})进行合并
  • 通过{...obj, a: 233}进行合并

4. DOM事件

4.1 DOM 事件级别

DOM 0 级,即element.onclick = function() {}
DOM 2 级,即element.addEventListener('click', function(){ })
DOM 3 级,即element.addEventListener('keyup', function(){ })

4.2 DOM事件模型

分别是事件冒泡事件捕获

4.3 DOM事件流

分别是捕获目标阶段冒泡

4.4 DOM事件捕获的具体流程

window开始,documenthtmlbody依次向下。
DOM事件冒泡的流程则与其恰好相反。

5. enctype 表单上传

enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。当属性值为application/x-www-form-urlencoded时,在发送前编码所有字符(默认); 当属性值为multipart/form-data时,不对字符编码。 在使用包含文件上传控件的表单时,必须使用该值;当属性值为text/plain时,空格转换为 "+" 加号,但不对特殊字符编码。

6. cookie的优点和弊端

cookie的优点是为持久保存客户端数据提供方便,分担服务器的存储负担。
cookie的缺点是在IEFireFox下有数量限制,且最大存储容量为4096字节;cookie的安全性不高,如果cookie被拦截到,那么就可以取得所有的session信息。

7. 浏览器本地存储

浏览器本地存储包含localStoragesessionStorage两种。localStorage用于持久化本地存储,除非主动删除数据,否则他是不会过期的;而sessionStorage只是一种会话存储,这些数据只存在于同一个会话中的页面,页面关闭即刻销毁。

相关文章

网友评论

      本文标题:JS 总结

      本文链接:https://www.haomeiwen.com/subject/ekreoqtx.html