温故知新丨面试学习法

275 阅读3分钟

执行上下文

this

  • 执行时确定,定义时无法确认

构造函数执行

function Foo() {
    this.name = name
}
var f = new Foo ('zs')

this = {}
this => name
return this

普通函数执行

  • this === window

对象属性执行

  • 对象属性,指向对象

Call Apply Bind

  • this为第一个参数
var fn2 = function (name,age) {
    alert(name)
    console.log(this)
}.bind({y:200})
fn2('zhangsan',200)
bind 还会输出一个this,所以只能用函数表达式,this指向y

作用域

  • js没有块级作用域
  • 只有函数和全局作用域

闭包

  • 函数作为返回值
  • 函数作为参数

异步和单线程

异步

  • 是否阻塞程序运行
  • 可能发生等待需要异步

什么时候需要异步

  • 定时任务:setTimeout,setInverval
  • 网络请求:ajax,动态加载
  • 事件绑定

单线程

  • 异步被抛出,压入栈中等待执行

数组API

  • forEach:遍历所有
var arr = [1,2,3]
arr.forEach(function(item,index){
<!--遍历所有-->
    console.log(index,item)
})
  • every:判断所有数组元素,都满足一个条件
var arr = [1,2,3]
var resule = arr.every(function (item,index) {
    
    if(item < 4) {
        return ture
    }
})
......log(result)
  • some:只要有一个满足
  • sort:排序--a--->b 小到大
  • map:重组(item,index)
  • filter:过滤满足条件的数组

对象API

  • for ... in ...
var key 
for (key in obj) {
    if(obj.hasOwnProperty(key) {
    console.log(key,obj[key])
}

Ajax

  • 手写
var xhr = new XMLHttpRequest()
xhr.open("GET",'/api',false) 
xhr.onreadystatechange = function () {
    if(xhr.readyState == 4) {
        if(xhr.status == 200) {
            alert(xhr.responseText)
        }
    }
}
  • readyState:0(未初始化),1(载入),2(载入完成),3(交互,正在解析交互内容),4(完成,内容解析完成,可以使用)
  • status:状态码

跨域

  • 同源策略:协议,域名,端口有一个不同就算跨域;
  • http默认端口80
  • https默认端口443
  • 可跨域的三个标签:<img src=xxx>,<link href=xxxx>,<script src=xxx>
  • 所有跨域请求都必须信息提供方同意

JSONP实现原理

window.callback = function (data) {
    console.log(data)
}

httpHeader

  • 服务器端解决跨域

ES6

ECMAScript 6 入门

箭头函数

详解箭头函数和普通函数的区别以及箭头函数的注意事项、不适用场景

存储

Cookie

  • 本身客户端服务端通信
  • 有本地存储功能
  • document.cookie =...获取和修改
  • 大小4kb

locationStorage和sessionStorage

  • localStorage.setItem(key,value)
  • localStorage.getitem(key)

Git

  • git add. 所有修改上传
  • git checkout xxx 放弃修改
  • git commit -m "xxx" 上传本地,备注
  • git push origin master
  • git pull origin master 拉取
  • git branch 分支
  • git checkout -b xxx/git checkout xxx 创建和切换分支
  • git merge xxx 分支合并
  • git status 查看有哪些改动
  • git clone 克隆
  • git diff 比较的是工作目录(Working tree)和暂存区域快照(index)之间的差异 也就是修改之后还没有暂存起来的变化内容。

linux

  • ssh name@server
  • mkdir a 创建a文件夹
  • ls 文件名
  • ll 文件列表
  • pwd 当前目录
  • cd .. 上级目录
  • re -rf a 删除文件夹
  • cp 拷贝
  • mv 移动文件夹
  • vim a.js 进一个编辑器
  • ESC :w 保存
  • :q 退出
  • cat a.js 直接打印文件全部内容
  • head 头部内容 head -n 1 a.js
  • tail 尾部内容
  • grep 搜索

页面渲染

  • 浏览器根据DNS服务器得到域名的IP地址
  • 向这个IP的机器发送http请求
  • 服务器受到,处理并返回http请求
  • 浏览器得到返回内容
  • 根据 html 结构生成DOM tree
  • 根据 CSS 生成 CSSOM
  • 将 DOM 和 CSSOM 整合形成RenderTRee
  • 根据renderTree 开始渲染和展示
  • 遇到