==与===的区别
- 对于string,number等基础类型,==和===是有区别的
- 不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等
- 同类型比较,直接进行“值”比较,两者结果一样
- 对于Array,Object等高级类型,==和===是没有区别的
- 进行“指针地址”比较
- 基础类型与高级类型,==和===是有区别的
- 对于==,将高级转化为基础类型,进行“值”比较
- 因为类型不同,===结果为false
事件
- 常用事件
- onClick单击事件
- onMouseOver鼠标经过事件
- onMouseOut鼠标移出事件
- onChange文本内容改变事件
- onSelect文本框选中事件
- onFocus光标聚集事件
- onBlur移开光标事件
- onLoad网页加载事件
- onUnload关闭网页事件
- 事件冒泡
- 由最具体的元素接收,然后逐级向上传播至最不具体的元素的节点(文档)
- 事件捕获
- 最不具体的节点先接收事件,而最具体的节点应该是最后接收事件
- 事件处理
- HTML事件处理
- 直接添加到HTML结构中
- DOM0级事件处理
- 把一个函数赋值给一个事件处理程序
- 同一个元素多个事件会被覆盖,只有最后一个事件起作用
- DOM2级事件处理
- addEventListener(“事件名”,“事件处理函数”,“布尔值”);
- true:事件捕获
- false:事件冒泡
- removeEventListen();
- IE事件处理程序(IE8及以下)
- attachEvent
- detachEvent
- HTML事件处理
- 事件对象
- 在触发DOM事件的时候都会产生一个对象
- 事件对象event
- type:获取事件类型
- target:获取事件目标
- stopPropagation();阻止事件冒泡
- preventDefault();阻止事件默认行为(比如超链接)
DOM对象
- 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)
- DOM操作HTML
- 改变HTML输出流:
- 注意,绝对不要在文档加载完成后使用document.write(),这会覆盖该文档
- 寻找元素:
- 通过id找到HTML元素,document.getElementById();
- 通过标签名找到HTML元素,document.getElementByTagName();
- 改变HTML内容
- 使用属性:innerHTML
- 改变HTML属性
- 使用属性:attribute,例如:
document.getElementById("aid").href="http://www.baid.com";
- 使用属性:attribute,例如:
- 常用方法:
- getElementsByName();获取name
- getElementsByTagName();获取元素
- getAttribute();获取元素属性
- setAttribute();设置元素属性
- childNodes();访问子节点
- parentNode();访问父节点
- createElement();创建元素节点
- createTextNode();创建文本节点
- insertBefore();插入节点
- removeChild();删除节点
- offsetHeight;网页尺寸,例如:
var width=document.body.offsetWidth;
- crollHeight;网页尺寸
- 创建节点示例
var body=document.body;var input=document.creatElement("input");input.type="button";input.value="按钮";body.appendChild(input);
- 改变HTML输出流:
- DOM操作CSS
- 基本语法:
document.getElementById(id).style.property=new style;
- 基本语法:
- DOM操作事件句柄
- addEventListener();向指定元素添加事件句柄
- removeEventListener();移出方法添加的事件句柄
内置对象
- String对象
- 字符串可以使用使用单引号或者双引号
- 获取字符串长度:length属性
- 在字符串中查找字符串的方法:indexOf(),成功返回位置,失败返回-1
- 内容匹配的方法:match(),成功返回匹配成功的字符串,失败返回空
- 替换内容的方法:replace()
- 字符串大小写转换:toUpperCase()/toLowerCase()
- 字符串转为数组:split
- Date对象
- 常用方法:
- getFullYear():获取年份
- getTime():获取毫秒
- setFullYear():设置具体的日期
- getDay():获取星期
- 常用方法:
- Array数组对象
- 数组的创建
var myArray=["Hello","iwen","ime"];
- 数组的访问
- 通过指定数组名以及索引号码(下标从0开始),可以访问某个特定的元素
- 常用方法
- concat();合并数组
- sort();排序
- push();末尾追加元素
- reverse();数组元素翻转
- 数组的创建
- Math对象
- 常用方法
- round():四舍五入;例如Math.round(2.5)等于3
- random();返回0~1之间的随机数;例如parseInt(Math.random()*10);
- max();返回最高值
- min();返回最低值
- abs();返回绝对值
- 常用方法
浏览器对象
- Window对象
- window对象时BOM的核心,window对象指当前的浏览器窗口。所有JavaScript全局对象,函数以及变量均自动成为window对象的成员;全局变量是window对象的属性,全局函数是window对象的方法,甚至HTML DOM的document也是window对象的属性之一
- window.innerHeight:浏览器窗口的内部高度
- window.innerWidth:浏览器窗口的内部宽度
- window.open(“url”,“windowname”,“style”):打开新的网页
- 计时器
- 方法
- setInterval();间隔指定的好描述不同的执行指定的代码
- clearInterval();停止setInterval()方法执行的函数代码
- setTimeout();暂停指定的毫秒数后执行指定的代码
- clearTimeout();停止之慈宁宫setTimeout()方法的函数代码
- 方法
- History对象
- history.back()与在浏览器中点击后退按钮相同
- history.forward()与在浏览器中点击向前按钮相同
- history.go()进入历史中的某个页面
- Location对象
- location对象用于获得当前页面的地址(URL),并把浏览器重定向到新的页面
- 属性与方法
- location.hostname返回web主机的域名
- location.pathname返回当前页面的路径和文件名
- location.port返回web主机的端口
- location.protocol返回所使用的web协议(http://或https://)
- location.href返回当前页面的URL
- location.assign()加载新的文档
- Screen对象
- 属性
- screen.availWidth可用的屏幕宽度
- screen.availHeight可用的屏幕高度
- screen.Height屏幕高度
- screen.Width屏幕宽度
- 属性
面向对象
1 | (function () { |
AJAX
- AJAX(Asynchronous Javascript And XML)
- 编程模板
- 创建XMLHttpRequest对象
- open操作初始化请求信息
- 监听事件处理响应结果
- send操作发出请求
创建各浏览器兼容的XMLHttpRequest对象
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17function creatXHR() {
var xhr = null;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
xhr = new ActiveXObject('Msxml2.XMLHTTP');
} catch (e) {
try {
xhr = new ActiveXObject('Microsoft.XMLHTTP');
} catch (e) {
}
}
}
return xhr;
}发送请求信息
- get方法
xhr.open("GET","http://test/keyword/hit?keyword=c",true);
xhr.send();
- post方法
xhr.open("POST","http://test/keyword/hit",true);
xhr.send("keyword=c")
;
- get方法
- 设置请求头信息
xhr.setRequestHeader("Content-Type","application/json");
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
响应的接收与请求
1
2
3
4
5
6
7
8
9
10xhr.onreadystatechange = function(e){
if(xhr.readyState ==4 && xhr.status == 200){
console.log(xhr.responseText);
console.log(xhr.responseXML);
console.log(xhr.getAllResponseHeaders());
console.log(xhr.getResponseHeader("Content-Type"));
console.log(xhr.status);
console.log(xhr.statusText);
}
}将Json字符串转换成Json对象:
- JSON.parse(xhr.responseText);
- eval(xhr.responseText);
设计模式
- 设计原则
- 开闭原则:对扩展开放,对修改关闭
- 里氏转换原则:子类继承父类,单独调用完全可以运行
- 依赖倒转原则:引用一个对象,如果这个对象有底层类型,直接饮用底层
- 接口隔离原则:每一个接口应该是一种角色
- 合成/聚合复用原则:新的对象应使用一些已有的对象,使之成为新对象的一部分
- 迪米特原则:一个对象应对其他对象有尽可能少的了解
- 单例模式
jQuery
- jQuery库可以通过一行简单的标记被添加到网页中
- jQuery是一个JavaScript函数库
- jQuery库包含的功能:
- HTML元素选取
- HTML元素操作
- CSS操作
- HTML事件函数
- JavaScript特效和动画
- HTML DOM遍历和修改
- AJAX
- Utilities
- 从CDN中载入jQuery,例如:http://libs.baidu.com/jquery/1.10.1/jquery.min.js
- 基础语法:
- $(selector).action()
- 美元符号定义jQuery
- 选择符selector“查询”和“查找”HTML元素
- jQuery的action()执行对元素的操作
- 例如:
- $(this).hide()隐藏当前元素
- $(selector).action()