//一、原生ajax
var xmlRequest = createXmlRequest();//每当 readyState 改变时,就会触发 onreadystatechange 事件。
xmlRequest.onreadystatechange = function() {/**
* readyState * 0(未初始化) * 1(初始化) * 2(发送数据) * 3(数据传送中) * 4(完成) * status * 200 请求成功,有数据返回 * 204 请求成功,无数据返回 * * **/ if (xmlRequest.readyState == 4 && (xmlRequest.status == 200 || xmlRequest.status == 204)) { console.log(xmlRequest.responseText) } } * * open(method,url,async) * * method:请求的类型;GET 或 POST * url:文件在服务器上的位置 * async:true(异步)或 false(同步) * * * send(string) 将请求发送到服务器 * string:仅用于POST请求 * * xmlRequest.open("POST", 'url', false); xmlRequest.send(null); function createXmlRequest() { var xmlRequest = null; try { xmlRequest = new XMLHttpRequest();} catch (e) {
try { xmlRequest = new ActiveXObject("Msxml2.XMLHTTP"); //IE6; } catch (e) { xmlRequest = new ActiveXObject("Microsoft.XMLHTTP"); //IE5 } } return xmlRequest; }//二、继承
var Fuite = function(name){ this.name = name || 'Fuite'; this.caneat = function(){ console.log(this.name+":YES "); } }var Apple = function(name){
//apply修改this的指向 Fuite.apply(this,[name]); } var temp = function(){}
temp.prototype = Fuite.prototype; Apple.prototype = new temp(); var apple1 = new Apple("tom"); apple1.caneat();//tom:YES console.log(apple1 instanceof Apple);//true console.log(apple1 instanceof Fuite);//true//三、闭包
/**
* 闭包就是有权访问另一个函数作用域的变量的函数 * * 闭包的优点:防止数据污染 * * * 闭包的缺点:容易造成内存泄漏 * **/ function outer(){ var name = "one"; var fn = function(){ console.log("内部function"); }var inner = function(){
return name; } return inner; } var result = outer(); console.log(result);