# javascript 总结
## 语法
1. 区分大小写
2. 命名规范
1. 首字母必须是 字母 _ $
2. 其他字符可以是 数字 字母 下划线 $
3. 避开系统的关键字
4. 单词和单词连接方式推荐驼峰命名
3. 注释
1. 单行注释 //注释的内容
2. 多行注释 /*注释内容*/
4. 语句
1. 要用;结尾(推荐做法)
2. 如果不写; 那么系统默认以换行作为语句的结尾
## 变量/常量
1. 变量声明 var
2. 常量声明 const
## 数据类型
1. typeof 检测数据类型  a=null;typeof a 可能是object  对于比较老的浏览器是function
2. undefined
3. null
4. Boolean
1. true/false
5. Number
1. 数字(正/负/整/小/0/Infinity/-Infinity)
2. NaN  NaN==NaN  返回false
6. String
1. 使用单引号或者双引号来定义
2. 转义字符\   \n \t  \r  \‘ \"
3. 字符串可以通过数组下标的方式来调用字符串对应位置的字符
## 运算符
1. 算术运算符: + - * / % ++ -- +(正) -(反)
2. 字符串: +
3. 比较运算符: > <  == === != !== >= <= 
4. 逻辑运算符: && || !
5. 位运算符: & | ^ XOR << >> <<< >>>
6. 三元运算符: 条件? 语句1:语句2
7. 赋值: = 带操作赋值: += -= *= /= %= |= &= ^= <<= >>= <<<= >>>=
8. 其他运算符: . , typeof delete instanceof void
## 流程控制语句
### 分支
#### if语句
```
1. if(条件){执行.....}
2. if(条件){...}else{...}
3. if(条件){...}else if(条件){}
4. if(条件){...}else if(条件){}else{}
5. if语句可以嵌套多层
```
#### switch语句
```
	switch(传入值){
		case 值:
			执行内容...;
			break;
		case 值:
			....
			break;
		default:
			执行.....
	}
```
### 循环
#### for
```
//语句1只执行1次
//执行语句2 当语句2返回true 继续执行
	for(语句1;语句2;语句4){
		语句3
	}
```
#### while
```
	while(条件){...}   //条件为真  执行
	do{...}while()	//先执行一次  再判断条件是否为真  为真继续执行
```
#### for...in
```
	//遍历数组或者对象
	
	for(var i in obj){
		//i表示 obj 的 下标 键名
		obj[i]  //obj  下标i对应的  值 
	}
```
## 函数(作用域)
```
	function 函数名(){
	
	}
	
	var 变量名 = function(){}
	
	//调用
	函数名()
	变量名()
	
	(function(形参){})(实参)
	(function(形参){}(实参))
	函数里边内部有个arguments 表示 实参对象
```
## 对象
1. 对象声明
```
	//数组
	var arr = [];
	var arr = new Array();
	
	//对象
	var obj = {};
	var obj1 = new Object();
	var obj2 = new 自定义构造方法();
	var obj = {"name1":"zhangsan",name2:"lisi"}
```
2. 构造方法
```
//构造方法
	function Person(n){
		this.name = n||‘小白‘;
		this.say = function(){
			alert(this.name)
		}
	}
```
## 内置对象
### Boolean
### Date
```
getFullYear()//年
getMonth()//月 0-11  当前月份需要+1
getDate()//日
getDay()//星期 0~6   0星期日
getHours()//时
getMinutes()//分
getSeconds()//秒
getMilliseconds()//毫秒
getTime()//时间戳 毫秒级
toString() //以字符串形式输出
valueOf() //内部存的值
```
### Number
```
	toString(进制)
	toFixed(n)  显示n位小数
	toExponential(n)显示n位.后面的数 指数表示法
	toPrecision(n) 显示n位
```
### Math
```
	Math.PI  //3.1415926535
	Math.abs()	//取绝对值
	Math.ceil()	//进一取整
	Math.floor()	//退一取整
	Math.max()//最大值
	Math.min()//最小值
	Math.pow(x,y)//x的y次幂
	Math.random()	//0~1的随机数    
	//m~n随机整数     
	//Math.floor(Math.random()*(n-m+1))+m//建议使用
	//Math.ceil(Math.random()*(n-m+1))+m-1
	Math.round()	//round  四舍五入
	Math.sqrt()	//求平方根
```
### String
```
trim() //清空两侧的空白
//查找
charAt() // 获取指定位置上的字符
charCodeAt()	//获取对应位置上的字符的ASCII码
indexOf(“abc”)	//返回子字符串abc在字符串中第一次出现的位置
lastIndexOf(“abc”)	//返回子字符串abc在字符串中最后一次出现的位置
match(regexp)	//找到一个或多个正则表达式的匹配
search(regexp)	//查找与正则表达式相匹配的子字符串
//替换
replace(表达式,替换的字符串)	//替换一个与正则表达式相匹配的子串
//截取
split(正则表达式,数组最大长度)	//用于把一个字符串分割成字符串的数组
slice(startindex,endindex)	//返回一个子字符串
substring(startindex,endindex)	//返回一个子字符串
substr(startindex,length)	//返回一个子字符串
//转换
toLowerCase()	//将字符串转换为小写
toUpperCase()	//将字符串转换为大写
```
### RegExp
	
```
	exec()	//返回匹配内容
	test()	//判断是否匹配
```
### Array
	
```
//添加/删除
unshift() //从数组头部添加元素
shift()		//从数组头部删除一个元素
push()		//从尾部添加
pop()		//从尾部弹出一个元素
splice()	//删除  替换  或 插入数组元素
//截取
concat()	//合并 数组 或 元素  为一个新数组
slice()		//返回数组中的一部分
//格式化
toString()	//以字符串形式输出数组
join()		//将数组元素以某个字符连接成字符串
reverse()	//颠倒数组中元素顺序
sort()		//排列数组中元素顺序
```
### Function (没用)
### Global
```
	parseInt()	//强制转换成int
	parseFloat()	//强制换行成float
	isNaN()		//判断是不是NaN
	isFinite()	//判断是不是Infinity
	eval()		//把字符串当做JS语句执行
	escape()	//编码
	unescape()	//解码
```
## BOM
### Location 对象 当前文档url地址对象模型
```
//跳转页面 设置 location.href = ""
protocal //协议
hostname //主机域名
port	//端口号
pathname	//路径加文件名
search	//get参数 ?后面的内容
hash	//锚点 	#后面的
href	//完整url地址
assign() //跳转
replace()	//替换跳转
reload()	//刷新
```
### Navigator 浏览器信息
```
appCodeName	//代码名称
appName		//浏览器名称
appVersion //浏览器版本号
language	//语言
platform	//系统
userAgent	//用户请求头
```
### screen 浏览器屏幕信息
```
	width	//屏幕宽度
	height	//屏幕高度
	availWidth - 可用的屏幕宽度 
	availHeight - 可用的屏幕高度 
```
### history 访问网页历史
```
	back() //后退 返回上一个 url
	forward() //前进 到下一个 url
	go(n)	//跳转到 第 n 个 url
```
### 其他
```
alert("文本")  //警告框
confirm("文本")	//确认框
prompt("文本","默认值")	//提示框
setInterval()
clearInterval()
setTimeout
clearTimeout()
```
## DOM
```
all[]	//提供对文档中所有 HTML 元素的访问。
forms[]	//所有form元素
images[]//所有img元素
links[]//所有a元素
//节点获取
getElementById()	//通过id获取节点
getElementsByTagName()	//通过标签名获取节点
getElementsByName()	//通过name属性获取节点
childNodes	children
firstChild	firstElementChild
lastChild	lastElementChild
nextSibling	nextElementSibling
previousSibling	previousElementSibling
parentNode	parentElement
//获取属性
attributes //属性集合
getAttribute("属性名")	//获取属性
setAttribute("属性名","属性值")	//设置属性
node.removeAttribute("属性名")		//删除属性
className
//节点操作
document.createElement()	//创建节点
document.createTextNode();	//创建文本节点
parentNode.appendChild()  //添加节点
parentNode.insertBefore(newNode,oldNode)	//在xx节点前面添加子节点
parentNode.replaceChild(newNode,oldNode)	//把xx节点替换上一个新节点
parentNode.removeChild()	//删除节点
//便捷操作 获取内容
node.innerHTML //获取标签里边所有内容
node.value	//获取表单的值
```
## 事件
```
//鼠标事件
* onclick	//单击
dblclick//双击
mousedown//按下
mouseup//抬起
* mouseover	//移入
* mouseout//移出
* mousemove//移动
contextmenu//鼠标右键
//键盘事件
onkeydown//按下
onkeyup//按起
onkeypress//在用户敲击按钮时触发
//文档
* onload 加载
* scroll 滚动条
resize //监听浏览器窗口大小改变
//表单
** onsubmit	提交事件
* focus	获取焦点
* blur	失去焦点
* change 内容改变
onselect	在元素中文本被选中后触发。
```
### 事件对象
```
onXXX = function(ent){
//获取事件对象
	var e = ent || window.event;//兼容性处理
}
//事件对象的属性
altKey 返回当事件被触发时,"ALT" 是否被按下。 
button 返回当事件被触发时,哪个鼠标按钮被点击。 
* clientX 返回当事件被触发时,鼠标指针的水平坐标。 
* clientY 返回当事件被触发时,鼠标指针的垂直坐标。 
* pageX 相对于页面的位置
* pageY 相对于页面的位置
ctrlKey 返回当事件被触发时,"CTRL" 键是否被按下。 
metaKey 返回当事件被触发时,"meta" 键是否被按下。 
relatedTarget 返回与事件的目标节点相关的节点。 
screenX 返回当某个事件被触发时,鼠标指针的水平坐标。 
screenY 返回当某个事件被触发时,鼠标指针的垂直坐标。 
shiftKey 返回当事件被触发时,"SHIFT" 键是否被按下。 
* keyCode 返回字符的ascii码
//取消冒泡
e.cancelBubble = true||e.stopPropagation();
```
## ajax
原文:http://www.cnblogs.com/zhuozhouzjh/p/5815006.html