JS相关的复习记录-持续更新

一:数据类型检测

  typeof 能够检测除了null 和 Array以外的全部类型。node

  instanceof 经过原型链来判断数据类型的es6

  Object.prototype.toString.call() 能够检测全部的数据类型数组

二:深浅拷贝

  浅拷贝:Object.assign({},{a:1})promise

  深拷贝:JSON.parse(JSON.stringify(obj))浏览器

三:promise

  promise 状态: pending, resolve,  rejectapp

  pending: 正在进行中。异步

  resolve: 成功的回调。模块化

  reject: 失败的回调函数

四:jquert 链式写法的调用原理

   实例在调用内部方法的时候,返回当前调用这个方法的实例对象this就能够了,由于返回了当前的this就能够继续访问本身的原型了this

五:什么是回调地狱并避免。

  什么是回调地狱:在js中的异步逻辑致使致使函数的参数层层嵌套。一个函数做为参数须要依赖另外一个函数执行的调用。

如何避免:

  保持代码剪短,模块化引用。

  es6 用promises 编写异步代码,使代码继续自上而下。而且可使用try/catch,

  es6 Generators是代码暂停,用next(继续)使代码继续自上而下

  es7 Async function 异步方法

 六:Javascript做用链域?

  由于全局函数没法查看局部函数的内部结构,但局部函数能够查看上层和全局的函数结构,当须要从局部函数查找某一属性或者函数时,如当前做用域没有,边上找到上一层做用域,直到全局。

 谈谈This对象的理解。

  this老是指向函数的直接调用者;若是有new关键字,this指向new出来的那个对象;在事件中,this指向触发这个事件的对象

七:DOM操做——怎样添加、移除、移动、复制、建立和查找节点?

  (1) 建立新节点 createDocumentFragment() //建立一个DOM片断 createElement() //建立一个具体的元素 createTextNode() //建立一个文本节点

  (2) 添加、移除、替换、插入 appendChild() removeChild() replaceChild() insertBefore() //在已有的子节点前插入一个新的子节点

  (3) 查找 getElementsByTagName() //经过标签名称 getElementsByName() //经过元素的Name属性的值(IE容错能力较强,会获得一个数组,其中包括id等于name值的) getElementById() //经过元素Id,惟一性

八:如何判断当前脚本运行在浏览器仍是node环境中?

  this === window ? 'browser' : 'node';

九:检测浏览器版本信息等

  navigator.userAgent

十:函数防抖(debounce)与函数节流(throttle)

  函数防抖(debounce):在事件被触发n秒后再执行回调,若是在这n秒内又被触发,则从新计时。

  实际利用:每次 resize/scroll 触发统计事件、文本输入的验证(连续输入文字后发送 AJAX 请求进行验证,验证一次就好)

  函数节流(throttle):规定一个单位时间,在这个单位时间内,只能有一次触发事件的回调函数执行,若是在同一个单位时间内某事件被触发屡次,只有一次能生效。

  DOM 元素的拖拽功能实现(mousemove).计算鼠标移动的距离(mousemove)

相关文章
相关标签/搜索