学习js推荐阮一峰老师的网络电子书,免费绿色。js不是经过系统设计和各领域广泛使用的语言,而是随着浏览器应用开发在实践中流行起来的。那么手写一个方法,发起HTTP请求就是一个基本功。XMLHttpRequest这个对象在网络请求中有着举足轻重的地位。
var postData = { "username": "13321503898", "password": "a123456", "imsi":"123455677" }; var xhr = new XMLHttpRequest(); xhr.open("POST", "http://139.199.156.43:9999/LK/login/loginByUsername", true); xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xhr.onreadystatechange = function(){ var XMLHttpReq = xhr; /** XMLHttpReq.readyState 0: 请求未初始化 1: 服务器连接已建立 2: 请求已接收 3: 请求处理中 4: 请求已完成,且响应已就绪
动作:open,send **/ if (XMLHttpReq.readyState == 4) { if (XMLHttpReq.status == 200) { var data = XMLHttpReq.responseText; alert(data) console.log(data); var json = JSON.parse(JSON.parse(data)); }else if(XMLHttpReq.status == 100){ }else if(XMLHttpReq.status == 300){ }else if(XMLHttpReq.status == 400){ }else if(XMLHttpReq.status == 500){ }else if(XMLHttpReq.status == 0){ /** 0不是http协议的状态,关于XMLHttpReq.status的说明: 1、If the state is UNSENT or OPENED, return 0.(如果状态是UNSENT或者OPENED,返回0) 2、If the error flag is set, return 0.(如果错误标签被设置,返回0) 3、Return the HTTP status code.(返回HTTP状态码) 第一种情况,例如:url请求的是本地文件,状态会是0 第二种情况经常出现在跨域请求中,比如url不是本身网站IP或域名,例如请求www.baidu.com时 第三种,正常请求本站http协议信息时,正常返回http协议状态值 **/ } } }; xhr.send(JSON.stringify(postData));
js中没有提供java中那么强大的collection类,但是其自身的数组还是很强大的,比如:
//4.将多维数组转化为一维数组
//这里有两个return语句,也就说明这里至少有两个函数。
let arr7 = [[0,1],[2,3],[4,[5,6,7]]] const newArr3 = function(arr){ return arr.reduce((pre,cur)=>{ return pre.concat(Array.isArray(cur)? newArr3(cur): cur) },[]) } console.log(newArr3(arr7));
还有很多js特性,其设计有历史原因。学习js的方法,更多的是看别人代码,从中模仿学习。
js的计算属性 var name='nickName'; var obj{[name]:'liyong'};
js中的Promise这个对象,使用与异步执行任务的。
我们都知道js语法是非常灵活的,比如装饰器,使用装饰器,我们很容易给既有类添加新的方法。装饰器是什么东西呢?可以理解为一个以被修饰对象为参数的方法,
参考博客:https://es6.ruanyifeng.com