导读
请搭配导图一起看
- 基层攻城狮 基础知识
- 高级攻城狮 项目经验
- 架构师 解决方案
https://zhuanlan.zhihu.com/p/28428367
举例面试题:
变量类型和变量计算
几种基本数据类型?复杂数据类型?值类型和引用数据类型?堆栈数据结构?
基本数据类型:Undefined、Null、Boolean、Number、String
值类型:数值、布尔值、null、undefined。
引用类型:对象、数组、函数。
堆栈数据结构:是一种支持后进先出(LIFO)的集合,即后被插入的数据,先被取出!
js数组中提供了以下几个方法可以让我们很方便实现堆栈:
shift:从数组中把第一个元素删除,并返回这个元素的值。
unshift: 在数组的开头添加一个或更多元素,并返回新的长度
push:在数组的中末尾添加元素,并返回新的长度
pop:从数组中把最后一个元素删除,并返回这个元素的值。
JS内置函数
- 内置函数Object,Array,Boolean,Number,String,Function,Date,RegExp,Error
- 内置对象Math,JSON…..
值类型和引用类型
- 值类型:数值、布尔值、null、undefined。
- 引用类型:对象、数组、函数。
What the fuck is JSON?
对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。
https://zh.wikipedia.org/wiki/JSON
http://www.json.org/json-zh.html
原型和原型链-构造函数问题
instanceof的妙用
object instanceof constructor
instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。
typeof无法判断数组
new对象过程
原型链继承
原型规则(隐式原型和显式原型)
原型链继承例子
zepto原型链
链式操作
作用域和闭包-执行上下文
变量(自由变量)
this
作用域
确定点击按钮的作用域
立即函数
( function(){…} )()和( function (){…} () )是两种javascript立即执行函数的常见写法
模仿一个私有作用域,用匿名函数作为一个“容器”,“容器”内部可以访问外部的变量,而外部环境不能访问“容器”内部的变量,所以( function(){…} )()内部定义的变量不会和外部的变量发生冲突,俗称“匿名包裹器”或“命名空间”。
函数声明和函数表达式不同之处在于,一、Javascript引擎在解析javascript代码时会‘函数声明提升’(Function declaration Hoisting)当前执行环境(作用域)上的函数声明,而函数表达式必须等到Javascirtp引擎执行到它所在行时,才会从上而下一行一行地解析函数表达式,二、函数表达式后面可以加括号立即调用该函数,函数声明不可以,只能以fnName()形式调用 。
匿名函数属于函数表达式
JQuery使用的就是这种方法,将JQuery代码包裹在( function (window,undefined){…jquery代码…} (window)中,在全局作用域中调用JQuery代码时,可以达到保护JQuery内部变量的作用。
http://www.jb51.net/article/50967.htm
闭包
异步和单线程
同步和异步
异步场景
setTimeout过程
JS-Web-API
获取时间
数组API
遍历数组和对象
使用if判断数组(for,forEach)和对象(for in)
对象API
随机数(长度一定)
Dom
Dom操作常用API
-
获取Dom节点getElementById
- 获取父元素 parentElement
- 获取子元素 childNodes
新增节点appendChild
创建元素createElement
删除节点 removeChild
JS中Attribute 和prototype 的区别是一个是标签属性 一个是对象属性
网络基础
图片懒加载
BOM
事件绑定
代理
事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。