Javascript基础(二)

三. JavaScript的数据类型

基本数据类型

  • number
  • string
  • Boolean
  • undefined
  • null

引用数据类型

四. JavaScript数组方法,JavaScript字符串方法
数组方法

  • arr.push(),向后添加,并返回修改后数组的长度

  • arr.unshift(),向后删除,并返回修改后数组的长度

  • arr.pop(),向前添加,,然后返回移除的项

  • arr.shift(),向前删除,,然后返回移除的项

  • arr.splice(a,b,c),删替插

    • 删除:a,删除第一项序号,b,删除数量
    • 替换:a,替换起点项,b,数量,c,替换数据
    • 插入:a,起点项,b,0,表示不删除,c,添加的数据
  • arr.sort(),排序,按unicode编码排序

    	arr.sort(function(a,b){
    		return a-b(b-a);//正序(倒序)
    	}
    
  • arr.join(),连接字符串为数组

  • arr.concat(),将参数添加进数组中

  • arr.reverse(),将数组反序

  • forEach():对数组进行遍历循环,没有返回值

字符串方法

  • str.length,输出字符串长度
  • str.indexOf(searchstring,startIndex),从startIndexz位置开始找searchstring第一次出现的位置,若未找到,返回-1
  • str.lastIndexOf(searchstring,startIndex),从后向前找,返回字符第一次出现的位置下标,未找到,返回-1
  • str.charAt(index),返回子字符串,index为数组下标,范围(0,str.length-1)
  • str.charCodeAt(),返回字符串的unicode编码
  • string.fromCharCode(num,num1),根据编码返回字符串
  • str.substring(start,end),两个参数,截取字符串,传入负值会从0开始
  • str.slice(),一个参数时,不会自动检测,负数时自动从后向前找
  • str.split(“.”),以.分割字符串输出数组,不传参也会分割
  • str.toUppCase(),将字符串转化为大写
  • str.toLowerCase(),将字符串转化为小写
  • str.replace(regexp|substr, newSubStr|function),搜素与子字符串相匹配内容,并用新字符串替换
  • str.search(regexp),找 str 与一个正则表达式是否匹配。如果匹配成功,则返回正则表达式在字符串中首次匹配项的索引;否则,返回 -1。

五. ajax的四个过程,要手撕代码

HTTP请求方法

  • GET在url里传送,安全性低,有缓存,会被保留在历史记录中便于分享,在报文主体没有任何意义,在浏览器回退时是无害的,只可以进行url编码,对传递的参数有长度限制,只接受ASCII字符
  • POST在request body里传送,安全性一般,更适合于上传,根据报文(指的是一串数据)主体对指定资源做出处理,在浏览器回退时会再次请求,可以支持多种方式,对参数没有限制

AJAX过程

能够局部刷新网页数据而不重新加载

  • 创建ajax对象(用来和服务器交换对象)

    var xhr = new XHTMLHttpRequest(); //IE7以后版本

  • 连接服务器

    open(方法,文件名,异步传输)

    • 方法:get/post
    • 文件名:自定义的文件名
    • 同步(事件一件一件进行)/异步(多种事件一起进行):false/true
  • 发送请求

    • send(),参数为作为请求主体发送的数据,不需传送时,必须传入null,null对有些浏览器来说是必须的
  • 接受返回值

    • onreadystatechange; 当服务器发生数据传输时的请求状态
    • 属性:readState
      • 0 (未初始化) 还未调用open方法
      • 1 (载入) 已调用open方法,正在发送请求
      • 2 (载入完成) send()方法以完成,已收到全部内容
      • 3 (解析) 正在解析相应内容
      • 4 (完成) 可在客户端调用
    • 响应自动填充xhr对象:
      • responseText属性:作为响应主体被返回的文本
      • responseXML属性:若响应内容类型是text/xmlapplication/xml,包含响应数据的XML DOM 文档,不是时为保存为null
      • status属性:响应的HTTP状态,判断请求是否成功,200成功,常见404失败
      • statusText:HTTP状态说明
    • 收到响应前可使用abort()方法来取消异步请求,xhr对象会停止触发事件,并不在允许访问任何响应属性值,在终止请求后,会对对象进行解引用,由于内存原因,不建议重用xhr对象

HTTP状态码

  • 1xx(临时响应):表示临时响应,并需要请求者继续执行操作

    • 100(继续):请求者应当继续提出请求。服务器表示已收到请求的第一部分,正在等待其余部分
    • 101(切换协议):请求者要求服务器切换协议,服务器已确认并准备更换
  • 2xx(成功):表示成功处理了请求

    • 200(成功):服务器已成功处理了请求,提供了请求的网页
    • 201(已创建):请求成功并且服务器创建了新的资源
    • 202(已接受):服务器已接受请求,但未处理
    • 203(非授权信息):已成功处理请求,但返回的信息可能来自另一来源
    • 204(无内容):成功处理了请求,但没有返回任何内容
    • 205(重置内容):成功处理了请求,并重置内容
    • 206(部分内容):成功处理了部分请求
  • 3xx(重定向):表示完成请求,需要进一步操作

    • 300(多种选择):服务器针对请求,可执行多种操作
    • 301(永久移动):请求的网络已永久移动到新位置返回响应时,会自动将转到新位置
    • 302(临时移动):服务器从不同的位置进行网页请求,但请求者会使用原有位置来进行以后的请求
    • 303(查看其他位置):请求者应对不同的位置,使用单独的GET请求检索响应时,服务器返回此地代码
    • 304(未修改):自从上次请求后,请求的网页未修改过
    • 305(使用代理):请求者只能使用代理访问请求的网页
    • 307(临时重定向):服务器目前从不同位置的网页响应请求,但请求者会继续使用原有位置来进行以后请求
  • 4xx(请求错误):表示请求错误,妨碍了服务器的处理

    • 400(错误请求):服务器不理解请求的语法
    • 401(未授权):请求要求身份验证
    • 403(禁止):服务器拒绝请求
    • 404(未找到):找不到请求网页
    • 405(方法禁用):禁止请求中指定的方法
    • 406(不接受):无法使用请求的内容特性响应请求的网页
    • 407(需要代理授权):指定请求者应当授权使用代理
    • 408(请求超时):等候请求时发生超时
    • 409(冲突):在完成请求时发生冲突,服务器必须在响应中包含有关冲突信息
    • 410(已删除):请求的资源已永久删除
    • 411(需要有效长度):服务器不接受不含有效内容长度标头字段的请求
    • 412(未满足前提条件):未满足请求者在请求中设置的其中一个前提条件
    • 413(请求实体过大):服务器无法处理请求,超出了处理范围
    • 414(请求的URL过长):网址过长
    • 415(不支持的媒体类型)请求的格式不受请求页面支持:
    • 416(请求范围不符合要求):页面无法提供请求的范围
    • 417(未满足期望值):未满足“期望”请求标字头段的要求
  • 5xx(服务器错误)

    • 500(服务器内部错误):服务器遇到错误,无法完成请求
    • 501(尚未实施):不具备完成请求的功能
    • 502(错误网关):服务器作为网关或代理,从上游服务器收到无效请求
    • 503(服务器不可用):目前无法使用(维修或故障),只是暂时的
    • 504(网关超时):服务器作为网关或代理,但没有及时从上游服务器收到请求
    • 505(HTTP版本不受支持):不支持HTTP协议版本

六. JSON是什么,JSON对象和JSON字符串如何转换

JSON是Javascript一个严格的子集,是一种轻量级的数据格式,可以简化复杂数据结构,利用了javascript的一些模式来表示数据化结构,不支持变量、函数、对象实例,有三种类型的值:

简单值

与JS相同,不过字符串必须使用双引号,且不支持undefined

对象
JSON对象字面量,与JS表示不同,没有变量,属性名必须加双引号

{
	"name": "chenlinong",
	"age":29,
	"school":{
	    "name": "xxx",
	    "location": "xxx"
	}
};		

数组
JSON数组,与JS表示不同,没有变量和分号

[
	{
		name": "chenlinong",
		"age":29,
		"school":[
			 "xxx"
		]
	},
	{
		name": "chenlinong",
		"age":29,
		"school":[
			 "xxx"
		]
	}

]

早期JSON解析器用JS的eval()函数,可以解析、解释并返回JS对象和数组,ES5对JSON规范,并定义了全局对象,eval()对JSON数据结构求值存在风险

JSON对象有两个方法:

  • stringify(变量名,过滤器,选项),把JS对象序列化为JSON字符串,不包含空格字符和缩进
    • 过滤器:可以是数组,也可以是参数。
    • 字符串缩进,若是数值,代表每个级别缩进的空格数,第二个参数可设为null,最大缩进空格数为10;也可使用字符串,可设置为制表符
    • toJSON()方法,解决JSON.stringify()不能满足有些JS对象自定义序列化需求时,给JS对象添加方法,返回自身JSON数据格式
  • parse(变量名,还原函数),把JSON字符串解析为JS值,还原函数在每个键值对上调用

你可能感兴趣的:(JS)