js知识点总结

js变量类型和计算

值类型和引用类型

值类型:变量存储的值在栈内存中。常用的值类型有Number, String, undefined, Boolean, Symbol.

引用类型:变量存储的值是堆内存的某个地址,这个地址所指向的区域内存储具体数据。常见的引用类型有Object, Array, 及Function. Function 是特殊的引用类型,不用于存储数据。

typeof 运算符

识别所有值类型(null除外),识别函数,识别是否是引用类型

instanceof 判断对象类型, '==='判断null跟undefined类型

深拷贝

递归是重点。数组与对象。

变量计算-类型转换

字符串拼接,“ == ”,if语句和逻辑运算符

除了 ==null 外,都用 “ === ”

truly变量:!!a === true。falsely变量: !!a ===false。!!0 === false, !!'' === false, !!null === false, !!undefined === false, !!NaN === false, !!false === false

原型与原型链

原型

每个class都有显式原型:prototype,每个对应实例都有隐式原型:proto。class的prototype === 实例的protp,这也是 instanceof的原理

作用域和闭包

作用域

全局作用域,函数作用域,块级作用域。自由变量:一个变量在当前作用域被使用但未定义,浏览器会向上级作用域依次寻找。如果全局作用域中该变量都未找到,浏览器会报错

分号开头

圆括号开头的前一条语句:匿名立即执行函数表达式;中括号开头的前一条语句:数组,变量名

闭包

所有的自由变量的查找实在函数定义的地方,向上级作用域查找,不是在执行的地方。

this

this的取值是在执行上下文的时候确定。原型中的this是proto的对象。

同步和异步的区别

js是单线程语言,同时只能做一件事。

异步任务用于如网络请求,读写文件,定时任务等需要花费较长时间。异步不会阻塞代码的执行,等异步任务完成时再通过回调函数接着执行完。

promise

promise解决了回调地狱的问题(callback hell)

js web api

DOM

dom的本质是一颗树,一种特殊的xml。

DOM节点操作

property 是js对象操作属性的一种形式,设置js变量的属性,不会对标签产生影响。不会体现到html的结构中。尽量用property进行dom操作
attribute 是dom元素的方法,设置标签的属性,会对标签产生影响,会影响html结构。

DOM结构操作

  • 新增插入节点
    新建节点document.createElement()
    插入节点
    appendChild()
    移动节点
    document.getElementById()
    appendChild()
  • 获取子元素列表
    获取父元素
    p.parantNode
    获取子元素列表
    div.childNodes
    nodeType属性可以选出想要的p标签
  • 删除子元素
    removeChild()

DOM性能

缓存DOM查询结果
将频繁操作改为一次性操作 createDocumentFragment()然后 append 进去

BOM

  • navigator
    const ua = navigator.userAgent
    const isChrome = ua.indexof('Chrome')
  • screen
    screen.height
  • location
    locaton.href
    location.protocol
    location.hash
    location.pathname
    location.search
  • history
    history.back
    history.forward

事件绑定

  • 事件绑定
  • 事件冒泡
    stopPropagation
    子元素冒泡到父元素
    preventDefault
    通过事件冒泡实现事件代理
    减少浏览器内存占用
    代码简洁
    但不要滥用

ajax

xhr.readyState

  • 0 - (未初始化)还没有调用send()方法
  • 1 - (载入)已调用send()方法,正在发送请求
  • 2 - (载入完成)send()方法执行完成,已经接受到全部响应内容
  • 3 - (交互)正在解析响应内容
  • 4 - (完成)响应内容解析完成,可以在客户端调用
    xhr.status
  • 2xx - 表示成功处理请求,如200
  • 3xx - 需要重定向,浏览器直接跳转,如301(永久重定向),302(临时重定向),304(资源未修改)
  • 4xx - 客户端请求错误,如404(未找到),403(权限不够)
  • 5xx - 服务端错误
    手写一个简易的Ajax(promise)
    同源: 协议,域名,端口三者必须一致
    所有的跨域,都必须经过server端允许和配合
    未经server端运行就实现跨域,说明浏览器有漏洞,危险信号
    加载图片cssjs可无视同源策略
    jsonp:客户端传相关url,服务端将相关信息拼接好后传给客户端。客户端调用定义好的函数处理服务端响应的拼接字符串
    cors:服务端设置
    response.setHeader("Access-Control-Allow-Origin", "url")
    response.setHeader("Access-Control-Allow-Headers", "")
    response.setHeader("Access-Control-Allow-Methods", "")
    接受跨域的cookie
    response.setHeader("Access-Control-Allow-Credentials", "")
    ajax常用插件:jQuery,axios,fetch

存储

cookie:本身用于浏览器和server通讯,被“借用”到本地存储来。键值对。

缺陷

最大存4kb。http请求时需要发送到服务端,增加请求数据量。只能用document.cookie = '' 来修改,太过简陋

localStorage和sessionStorage

HTML5专门为存储而设计,最大可存5m
api简单易用,setItem getItem
不会随着http请求被发送出去
localStorage数据会永久存储。除非代码或手动删除
sessionStorage数据只存在于当前会话,浏览器关闭则会清空

关于开发环境

git
chrome调试工具
抓包
webpack

运行环境

网页加载过程

dns解析: 域名 -> ip地址
浏览器根据ip地址向服务器发起http请求
服务器处理http请求,并返回给浏览器
渲染过程
根据html代码生成domtree
根据css代码生成cssom
将dom tree和cssom整合形成render tree
根据render tree渲染页面
遇到

你可能感兴趣的:(js知识点总结)