// ie浏览器中的是冒泡事件
// 网景浏览器中的是捕获事件
// 事件对象
// 事件对象封装了一系列的与事件有关的信息 ,浏览器封装好了传递给事件
// 获取:通过事件处理函数的参数获取
// 兼容ie浏览器的写法 e=e||e.event
// 事件委托
// e.target && e.srcElement 都是表示的是事件目标 何为时间目标 就是鼠标点击的那个元素就是事件目标
// e.currentFargt this 都是获取当前绑定事件的元素
// e.preventDefault 阻止默认事件 一般用在认证
// e.sotpPropagtion 阻止冒泡事件 设置在哪一个事件上 那么他的上一个父元素的事件会被阻止
// tagName 等同于 nodeName
// 鼠标事件对象\
// pageX(Y) 鼠标触发事件的一瞬间 距离页面的横纵坐标 一帮不会随可视化区域的改变而改变
// clientX(Y) 鼠标触发事件的一瞬间 距离页面可视化区域的距离 会一直改变
// offsetX(Y) 鼠标触发事件的一瞬间,距离页面时间目标的内边距的坐标
// offsetheight 获取元素的样式高度 宽度一样
// screen 鼠标相距屏幕的距离
// 鼠标事件
// click 点击事件
// dblclick 双击鼠标事件
// mousedown 鼠标按下事件
// mouseup 鼠标松开事件
// mousemove 鼠标在元素上移动是触发事件
// mouseenter 鼠标移入事件 默认不发生冒泡事件
// mouseleave 鼠标移出事件
//contextmenu 右键点击事件
// mouseover 鼠标移入事件
// mouseout 鼠标移出事件 可以冒泡事件
// 键盘事件
// keydown 键盘按下触发
// keyup键盘抬起事件
// keypress键盘按下抬起的任意字符建事件
// 大多数都是直接绑定在 window 和 document 对象上
// 键盘事件对象
// 参数 e
// e.code 得到按下键盘的字符串 适配键盘布局
// e.key 得到按下键盘的字符串 不适配键盘布局
// e.keycode 得到按下键盘的编码
// altkey判断是否按下 alt ctrlkey 判断是否按下ctrl shiftkey 返回值都是true 和 false
// 表单事件
// focus 聚焦事件
// blus 失去焦点事件
// submit 表单提交事件
// change 改变文本内容事件 多用于 input select textarea
// input 文本内容改变出发 及时触发
// 表单事件对象
// defaultvalue 默认值
// selectedIntdex 获取选中元素的下标 options得到当前下拉列表中所有的值
// BOM 浏览器对象模型
// 核心对象 window document
// BOM的API
// history 包含了浏览器窗口访问过的url地址
// location 包含当前url的信息
// screen 客户端显示屏的信息
// navigater 浏览器自身的信息
// 定时器 setTimeout 一次性的当时机成熟就触发事件
// 清除定时器 clearTimeout 清除定时器
// setInterval 设置定时器 周期性定时器
// clearInterval 清除定时器 一般都放在定时器函数中
// 只执行一次 返回值:的是编号
// window的属性
// innerHeight 获取当前窗口的可视化区域的高度 不包含控制台
// innerWidth 获取当前窗口的可视化区域的宽度
// pageXoffset 横坐标的滚动条的偏移量
// pageYoffset 纵坐标的滚动条的偏移量
//DOM的属性
// clientWidth 获取当前可视化窗口的宽度
// clientHeight 获取当前可视化区域的高度
//offsetTop 元素浏览器窗口距离屏幕的x的距离
//offsetLeft 元素浏览器窗口距离屏幕的x的距离
// offsetHeight 获取元素自身的高度
// offsetWidth 获取元素自身的宽度
// window的方法
// alert() 弹出警示框
// confirm() 显示一段信息 提示按钮有 取消和确定按钮
// prompt() 接收用户输入的数据
// open()窗口的信息 打开一个新窗口 (打开地址,窗口名称,窗口信息)
// close()关闭窗口
// 事件
// srcoll 滚动条滚动事件
// navigator对象
// online 系统是否处于联网状态
// history 对象
// length 得到浏览过的页面的个数
// back() 后退:forward 前进 go()
// location对象
// host 获取当前浏览器的主机名 或ip地址 和端口名 hostname 只能获取主机名
// protocol:获取协议部分
// protname 得到当前url 的路径部分
// search 获取参数的内容
// href 在当前页面进行跳转
// screen 对象
// reload() 更新加载url的资源
// repulce() 用给定的url替换掉当前的url
// 作用域
// 表示代码的一个区域 运行环境
// 全局作用域 函数作用域
// 全局作用域
// 特点:在全局作用域下声明的变量和函数都会被提示到脚本块的顶部 同时都会成为window下的属性
// 函数作用域
// 特点 在函数类声明的变量不会成为window下的属性 只会被提升到函数体的顶部
// 1,函数作用域的代码块运行时如果使用变量 会先从自己的作用域下寻找 如果没有则会取全局作用域下寻找
// 同时如果使用没有定义的变量 那么这个变量在执行到他的时候会被提升到全局作用域下 这样会造成(全局污染)
// 函数表达式
// 函数表达式的格式: var time=function list(){} 这样调用的方法时 直接通过变量调用 函数名再次没有意义
// 函数的参数 基本数据类型作为参数 都是以 按值传递
// 引用型数据类型参数都是以 按地址传递
// 立即执行函数
// 将一个函数括号括起来
// 全局预编译
// 当文档运行时进行全局预编译
// GO,在与预编译时产生的动态对象
// 1,分析var 变量声明,如果变量在 GO 中不存在着直接将变量名作为GO的属性名,值为undifined 如果已存在这不发生任何改变
// 2,分析function 函数 将函数名作为 GO对象中的属性名 如果存在,直接覆盖
// 函数预编译 AO,在与预编译时产生的动态对象
// 1,分析函数运行
// 2,函数声明的形参 成为 AO对象的属性名 值为 实参的值
// 3,分析var 声明 如果变量在AO中不存在 直接将变量名作为AO的属性 值为 undefined 如果存在这不改变
// 4,分析函数将函数作为AO的属性 值为函数体 如果已存在直接覆盖
// 作用域链
//作用域链也叫做作用域的集合 隐式属性系统自动访问
// 函数执行上下文的集合
// 也可以理解为函数运行时创建一个乘为执行上下文的内部对象 执行完后会自动删除掉
// 分两步 定义函数 执行函数
// 变量查询: 从前函数的作用域中最先从自己开始查询,最后查询全局进行
// 闭包 closure 一种现象 内部函数被保存到了外部 会形成闭包
// 闭包的形成导致作用域不被释放 导致内存泄漏