执行上下文
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
箭头函数
详解箭头函数和普通函数的区别以及箭头函数的注意事项、不适用场景
存储
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 开始渲染和展示
- 遇到