1.理解事件原理。
首先什么是事件,事件就是事件是用户或浏览器自身执行的某种动作,如click,load和mouseover都是事件的名字。 那么什么是DOM事件流,事件发生时会在元素节点与根节点之间按照特定的顺序传播,路径所经过的所有节点都会收到该事件,这个传播过程即DOM事件流。 DOM2级事件规定事件流包括三个阶段:事件捕获阶段,处于目标阶段,事件冒泡阶段; 在事件监听流中可以使用event.stopPropagation()来阻止事件继续往下流
2.ES6
(1)let和const的异同点
相同点:let和const只在声明所在的块级作用域内有效;不提升,同时存在暂时性死区,只能在声明的位置后面使用;不可重复声明;
不同点:let声明的是变量;const声明的是常量。
复制代码
(2)箭头函数 ()=>
箭头函数没有函数提升
箭头函数没有this,他会捕获其所在上下文的this值,作为自己的this值
箭头函数不绑定arguments,取而代之用rest参数
箭头函数不能作为构造函数,不能被new,没有property
call和apply方法只有参数,没有作用域
复制代码
(3)模板字符串 使用反引号``,模板字符串中的变量使用${}处理;
const a = `hello+${memory.data}`
复制代码
(4)解析结构
// 首先有这么一个对象
复制代码
const props = { className: 'tiger-button', loading: false, clicked: true, disabled: 'disabled' }
// es5
复制代码
var loading = props.loading;
var clicked = props.clicked;
// es6解析结构写法
复制代码
const { loading, clicked } = props;
// 给一个默认值,当props对象中找不到loading时,loading就等于该默认值
复制代码
const { loading = false, clicked } = props;
//数组也有自己的解析结构
// es6
复制代码
const arr = [1, 2, 3];
const [a, b, c] = arr;
// es5
复制代码
var arr = [1, 2, 3];
var a = arr[0];
var b = arr[1];
var c = arr[2];
3.js中split,map,join方法
string.split()方法用于将字符串分割为字符串数组
“hello”.split("") === ["h", "e", "l", "l", "o"]
map()方法生成一个新的数组,arr.map(方法),原数组通过map括号中提供的方式生成新的数组,此方法不改变原数组
var data = [1, 2, 3, 4];
var newData = data.map(function(i){return i*i});
console.log(newData); // [1,4,9,16]
join()方法用于将数组中的元素放到一个字符串中
["h", "e", "l", "l", "o"].join('') === 'hello'
复制代码
4.Cookie,sessionStorage,localStorage的异同点
共同点:都储存在浏览器端,同源
不同点: a.cookie在浏览器和服务器之间来回传输;sessionStorage,localStorage仅在本地保存,不会自动把数据发送给服务器;
b.存储大小限制不同,cookie不超过4k,sessionStorage,localStorage可以达到5M或更大
c.数据有效期不同,cookie在设置的过期时间之前有效;sessionStorage仅在当前浏览器关闭之前有效;localStorage始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据
d.作用域不同:sessionStorage不在不同的浏览器窗口*享,即使是同一个页面;localstorage在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的
复制代码
5.如何获悉一个对象的具体类型
typeOf,instanceof,contructor
复制代码
6.js中的prototype属性
原型属性prototype使得您有能力向对象添加属性和方法
对于原型来说,最重要的一点是理解它的‘实时’性。由于js中,几乎所有的对象都是通
过引用的方式传递的,因此我们所创建的每个新对象实体中并没有一份属于自己的原型副本,这也就意味着
我们可以随时修改prototype属性,并且由同一构造器创建的所有对象的prototype属性也都会
同时改变(甚至会影响在修改之前就已经创建的那些对象)复制代码