课程大纲
第一阶段 JS基础
JS入门:事件、原理、属性、样式、函数、if判断
JS入门:style和行间样式、函数传参、属性操作两种方式
字符串和变量、字面量和变量
提取行间事件、onload、byTagName、数组
循环、全选、选项卡、innerHTML、字符串连接
调试工具的使用、如何调试JS
变量类型、typeof、JS常见类型
类型转换、parseInt、NaN、隐式转换
作用域、闭包、命名规范、运算符、流程控制
变量遮蔽
JS中的随机数、随机颜色、随机范围、随机不重复
函数返回值
深入理解函数返回值
定时器:interval、timeout、时钟、QQ资料框、自动播放选项卡、京东商城侧边栏
arguments、字符串操作、数组操作、Json
循环外i的问题、函数定义和调用的区别、不变的变量
DOM操作基础:创建、添加、删除
BOM基础:窗口操作、UA、location
BOM应用:滚动、scrollTop、offset、clientHeight、浏览器类型检测
事件对象:冒泡、clientX、keyCode、ctrl/alt/shift、默认行为、拖拽
QQ邮箱闪烁提示、回放路径的拖拽
树形菜单、多级右键菜单
第二阶段 JS中级开发+案例实战
批量设置样式:json、cssText、with
location、hash、query的处理,刷新保存页码
Date对象应用:setFullYear/Month等,时间戳、倒计时
Date高级应用
闭包的应用、封闭命名空间
ajax无刷新数据加载:创建、发送、接收、字符集和缓存
DOM应用:firstChild/lastChild、nextSibling/previousSibling
操作属性的第三种方式、自定义属性的获取、src的相对路径
offsetParent、计算元素的页面绝对位置
图片延迟加载——迅雷
简易瀑布流——花瓣
横向瀑布流——百度
DOM与innerHTML、innerHTML的bug
天猫、淘宝吸顶导航条
天猫、京东placeholder输入框
永远在页面中的右键菜单、提示图片
图片预加载、Image对象的使用
Image对象批量加载
运动基础、匀速运动、运动框架、侧边栏、淡入淡出
缓冲运动、页面提示框
多物体运动框架、万能运动框架、链式运动框架、完美运动框架
布局转换、淘宝幻灯片
运动应用:划动提示层、百度百科数字框、新浪滚动微博
永远在页面中放大的图片
无缝滚动
手风琴幻灯片、淘宝网无缝滚动幻灯片
this的用法、完美拖拽
完美封装可重用代码
完美拖拽、吸附拖拽、带框拖拽
程序思想——如何找思路,如何找规律,如何思考
碰撞检测、模拟窗口拖拽大小
窗口拖拽大小的封装和重用
自定义滚动条、鼠标滚轮
事件绑定、DOM事件流
第三阶段 cookie基础
ajax高级应用:用户注册和登录、表单提交
后台接口的使用、接口文档
编写AJax的基本步骤
Jsonp跨域的方法——百度下拉提示
script标签的怪异特性、callback的使用
Jsonp标签的管理
封装可重用的Jsonp方法
ajax制作简易新浪微博:后台、接口、分页、顶、页码
其他常见数据格式及用法:CSV、XML
JS中的预解析机制、script出错时的处理机制
预解析相关面试题
递归及其各种应用
递归相关面试题
递归的性能问题、递归的优化
栈溢出的原因和处理
引用、复制
JS中的异常:try...catch的使用
try的嵌套和性能问题
抛出异常、Exception对象、异常和返回值的区别及用途
JS变量生存周期、垃圾回收机制
闭包与JS垃圾回收
闭包的用法、保存i的值
JS性能优化——健壮性、维护性、性能的平衡
性能瓶颈的识别——性能检测工具的使用:Chrome profiles、YSlow等
JS阻塞加载、图片延迟加载、网络性能优化、压缩、CDN的使用
JS执行性能优化:DOM操作、循环、数组优化、局部变量、eval、parseInt、系统函数、字符串连接、正则等
正则表达式:RegExp对象、search方法、忽略大小写
match方法和全局匹配、量词的问题、replace方法
字符类、转义字符、行首行为、中文、单词边界、括号
正则应用:可重用的表单校验
自动表单校验、批量表单校验
自定义表单组件
DOM文本节点:创建、兼容、应用
firstChild怪异问题、childNodes的问题
domReady事件:优点、DOMContentLoaded、defer、onload
事件队列、封装ready事件函数
事件委托(事件代理):冒泡的使用、srcElement属性、target属性、this的检测
call的使用——解决this指向问题
mouseleave事件——作用、封装,彻底解决mouseout冒泡的问题
弹性应用:滑动导航
第四阶段 JS面向对象
面向对象回顾:什么是面向对象、对象的组成、OOP的特点、this的本质、Object对象
工厂方式构造对象、原型(prototype)、混合法构造JS对象、实例:面向对象的选项卡
JS算法基础:时间复杂度和空间复杂度
数据结构基础:线性和随机、线性表、O表示法、数据结构基本操作
线性表和排序:4大排序算法、适用范围、蜕变和劣化、移动操作开销
树和排序:树的查找、添加和平衡
散列:空间换取时间、空间利用率和算法效率
图:路径算法、预处理和随机处理
模块的规划、接口
模块的加载、依赖、循环依赖
模块作用域和export
script加载和同步、请求合并、压缩代码
模块的重用和冲突
MVC基础:3层模型和耦合度
耦合的问题和消除
数据独立性、独立数据模型
设计模式:优点、常见模式
自定义事件、事件队列管理、事件的传递、事件对象和参数、监听模式的问题
数据队列的管理、反向监听和解耦合、模块独立性