typeof 能够检测除了null 和 Array以外的全部类型。node
instanceof 经过原型链来判断数据类型的es6
Object.prototype.toString.call() 能够检测全部的数据类型数组
浅拷贝:Object.assign({},{a:1})promise
深拷贝:JSON.parse(JSON.stringify(obj))浏览器
promise 状态: pending, resolve, rejectapp
pending: 正在进行中。异步
resolve: 成功的回调。模块化
reject: 失败的回调函数
实例在调用内部方法的时候,返回当前调用这个方法的实例对象this就能够了,由于返回了当前的this就能够继续访问本身的原型了this
什么是回调地狱:在js中的异步逻辑致使致使函数的参数层层嵌套。一个函数做为参数须要依赖另外一个函数执行的调用。
如何避免:
保持代码剪短,模块化引用。
es6 用promises 编写异步代码,使代码继续自上而下。而且可使用try/catch,
es6 Generators是代码暂停,用next(继续)使代码继续自上而下
es7 Async function 异步方法
由于全局函数没法查看局部函数的内部结构,但局部函数能够查看上层和全局的函数结构,当须要从局部函数查找某一属性或者函数时,如当前做用域没有,边上找到上一层做用域,直到全局。
谈谈This对象的理解。
this老是指向函数的直接调用者;若是有new关键字,this指向new出来的那个对象;在事件中,this指向触发这个事件的对象
(1) 建立新节点 createDocumentFragment() //建立一个DOM片断 createElement() //建立一个具体的元素 createTextNode() //建立一个文本节点
(2) 添加、移除、替换、插入 appendChild() removeChild() replaceChild() insertBefore() //在已有的子节点前插入一个新的子节点
(3) 查找 getElementsByTagName() //经过标签名称 getElementsByName() //经过元素的Name属性的值(IE容错能力较强,会获得一个数组,其中包括id等于name值的) getElementById() //经过元素Id,惟一性
this === window ? 'browser' : 'node';
navigator.userAgent
函数防抖(debounce):在事件被触发n秒后再执行回调,若是在这n秒内又被触发,则从新计时。
实际利用:每次 resize/scroll 触发统计事件、文本输入的验证(连续输入文字后发送 AJAX 请求进行验证,验证一次就好)
函数节流(throttle):规定一个单位时间,在这个单位时间内,只能有一次触发事件的回调函数执行,若是在同一个单位时间内某事件被触发屡次,只有一次能生效。
DOM 元素的拖拽功能实现(mousemove).计算鼠标移动的距离(mousemove)