JavaScript3

  • (一)、正则表达式
  • (二)、this指向
  • (三)、es6
  • (四)、面向对象
  • (五)、Ajax
  • (六)、promise
  • (七)、async和await
  • (八)、fetch
  • (九)、cookie
  • (十)、jsonp
  • (十一)、闭包

(一)、正则表达式

reg.test()验证并返回true和false
exec可以截取符合的内容

\d 一位数字
\D 一位非数字
\s 一位空白(空格 缩进 换行)
\S 一位非空白
\w 一位字母 数字 下划线
\W 一位 非字母 数字 下划线
. 任意内容(换行符不算)
\ 转义字符

边界符:
^开头限制
$ 结尾限制

限定符号:

*0-多次
+1-多次
? 0-1次
{n} 指定次数
{n,}大于等于n次
{n,m}大于等于n次,小于等于m次

特殊符号:
()表示是一个整体
| 或
[] 代表一个
[a-zA-Z0-9_] 等价 \w

捕获exec方法
exec() 捕获片段 只能截取第一个符合的片段 如果未捕获则返回空
示例:
var datestr=“time is 2029-01-01 12:20:20”
var reg=/\d{4}-\d{1,2}-\d{1,2}/
var newdatestr=reg.exec(datestr)
console.log(newdatestr[0].split(“-”).join(“/”)) 结果为2029/01/01

标识符 g i
g是全局标识符 在正则表达式加小括号时会单独捕获,输出为一个数组
i 可以忽略大小写

正则表达式两大特性
1.懒惰性(从头开始执行),使用全局标识符解决
2.贪婪性
3.非贪婪?

字符串和正则
例:
var str=“adearfa”
var newstr=str.replace(/a/g,"") 可以将所有的a替换成

search查找索引 更加宽泛

match 捕获内容 可以将多个内容捕获

(二)、this指向

this 关键字
谁调用我,this就指向谁(不包括es6 箭头函数)

改变this指向

call方法
.call(传一个参数) 执行函数,并改变this执行为函数的第一个参数。 支持多个参数

apply方法
.apply(传一个参数) 两个参数,第二个参数是数组可以传入函数

bind方法 改变this指向为函数的第一个参数,不会自动指向函数,返回一个新的函数
var fun1=obj1.getName.bind(obj2)
fun1()调用执行

(三)、es6

let 关键字 定义变量
1.必须先定义再使用
2.变量重名
3.块级作用域{}

const 关键字 定义常量 无法改变

tab选项卡可以直接使用let 不用再创建新的变量储存当前点击的元素

es6箭头函数

例:
var test2=()=>{console.log(2222)
}

特点
1.()可以省略 只有一个形参可以省略
2.{}可以省略,只有一句代码 或者只有返回值的时候 返回对象时,可以省略但要加小括号
3.没有arguments 这个可以在没有形参时,拿到传进来的参数,是一个伪数组形式
4.箭头函数的this是父级作用域的
函数的默认参数,先定义形参的值

es6的解构赋值
快速的从对象和数组中获取里面的成员

var arr=[“ada”,“dada”,“wras”]
Let [x,y,z]=arr
console.log(x,y,z)

便捷交换两个值
var a=10
var b=20
var[b,a]=[a,b]
console.log(a,b)

多维度数组,便捷获取数组的值
var arr2=[1,2,[3,4,[5]]]
var [a,b,[c,v,[r]]]=arr2
console.log®

获取对象的值 实现快捷获取
Let {name,age,location}=obj
doucment.write(name)
若重名则添加:一个新名字,值会被赋到新名字里

复杂对象获取
var obj2={name:"123",age:100,location:{province:"yuq"city:"weew"},hobby:[11,2,3]
}var {name,age,location:{province,city,},hobby:[a,b,c]
}=obj2

es6的对象简写
k值和后面变量一样可以省略

es6的展开运算符
…展开

var a=[1,2,3]
var b=[4,5,6]
var c=[…a,…b] 便捷合并两个数组

…赋值
var a=[1,2,3]
var b=[…a]
b[0]=“kerwin”

形参
var test=(…arr)=>{
console.log(arr)
}
test(1,2,3,4,5) 可以代替arguments
普通函数也可以同样使用

实参
test(…arr) 直接传数组展开的值

伪数组的转换
function test(){
var arr=[…arguments]
console.log(arr)
}
test(1,2,3,4,5)

对象合并
var obj={
…obj1,
…obj2
}
若有重名的k值,后面会覆盖前面的

es6的模块化语法
1.私密不漏
2.重名不怕
3.依赖不乱

导出
export{}将想要暴露的函数写在里面
使用格式:在script的标签里写type=“module”
import{}from’./module/A.js’ 导入

用as重名名同名函数再进行调用

依赖使用时,直接用import进行导入
export default默认导出

(四)、面向对象

面向对象 是一种编程模式,是一个思想

创建对象的方式

工厂函数
funtion createObj(name){
var obj={
obj.name=name
}
return obj
}
var obj1=createObj(“你好”)

自定义构造函数
funtion createObj(name){
自动创建对象
this.name=name
自动返回
}
var obj1=new createObj() 构造函数

注意问题
1.首字母大写
2.构造函数不写return
3.可以当普通函数用

new过程==实例化过程
实例对象

面向对象原型
.prototype 共享内存

对象.proto===构造函数的原型
原型链 构造函数上面还有Object
原型链顶点:object / null

es6的class

class CreateObj{
构造器函数
constructor(name){
this.name=name
}
可以将原型挂在里面
}

面向对象继承

构造函数继承–继承属性

funtion Person(name,age){}
funtion Student(){
Person.call(this,name,age)
}

原型继承
Student.prototype=new Person()

Student.prototype.printGrade=funtion(){}
基础增加方法

覆盖方法(既再写一次覆盖)

增强方法
再取一个名字然后调用原函数,再写新的代码

组合继承
原型加上原型继承

es6的继承

class Student extends Person()

super() 继承属性

super.say() 覆盖

(五)、Ajax

Ajax的同步异步
xhr.open(“GET”,“1.json”,true)
true表示异步请求
false表示同步请求

Ajax请求方式
get 偏向获取数
post 偏向提交数据
提交格式支持 name=kerwin&age=100 {“name”:“kerwin”}

xhr.setRequsetHeader(“Content-Type”,“application/x-www-form-urlencoded”) 代表第一种提交格式
xhr.setRequsetHeader(“Content-Type”,"application/json)第二种提交方式
put 偏向更新 (全部)
delete 偏向删除数据
patch 偏向部分修改

Ajax封装

try尝试解析数据
try{
let result=JSON.parse(xhr.responseText)
success(result)
}catch (err){
error(“失败”)
}

回调地狱问题
回调函数嵌套过多
难以维护
q.js Promise解决回调地狱

(六)、promise


Promise的基础用法
是构造函数
var q = new Promise(funtion(resolve,reject){
里面添加异步
resolve()执行第一个
reject()执行第二个
})
q是promise的对象

pending 执行中
fulfilled 兑现承诺状态
reject 决绝承诺状态

q.then(funtion(){
兑现承诺,函数执行
}).catch(funtion(){
拒绝承诺,函数执行
})

.then(res=>{
return pajax解决回调地狱
})

(七)、async和await


async function test(){}
await 同步代码/promise对象 只影响内部
使用try捕获内部错误

(八)、fetch

fetch(“http://localhost:3000/users”).then(res=>{
return res.json()

})
在第一个then判断ok的值,正确执行第二个then,如果false执行catch错误。
return Promise.reject()

(九)、cookie

http协议无状态

cookie 本地存储
sessionID 钥匙

存cookie
document.cookie=“uesername=kerwin” 信息要一条一条的存
;path= 设置路径
外层不可以访问内层,内层可以访问外层
expires= 设置过期时间

获取
getCookie

修改
同名覆盖

删除
将过期时间调早

(十)、jsonp

同源策略:同域名 同端口号 同协议
不符合的,浏览器会阻止请求

原理:动态创建script标签,src属性指向没有跨域限制
指向一个接口,接口返回格式一定是()函数表达式

注意:
1.后端接口形式必须**()
2.onload 删除scrip标签
3.只能get请求

(十一)、闭包

函数内部返回一个函数,被外界所引用
这个内部函数就不会被销毁回收
内部函数所用到的外部函数的变量也不会被销毁

优点:临时变量永存
缺点:内存泄漏 func=null

JavaScript3相关推荐

  1. JavaScript3基础——运算符和类型转换

    JavaScript3基础--运算符和类型转换      JavaScript运算符     JavaScript运算符也称操作符.其作用是对目标数据进行运算操作. 基本数学运算符     + - * ...

  2. 08.15 javascript3 分支结构 条件语句 :单向分支 双向分支 嵌套分支 多项分支 循环结构 while dowhile for 跳转语句 其他语句...

    # 分支结构  条件语句 ### 单向分支          if (){              } ### 双向分支          if () {          } else {     ...

  3. 通过svg方式绘制图形(SimpleMarkerSymbol)并打印(ArcGIS API for JavaScript3系列)

    打印前效果: <!DOCTYPE html> <html><head><meta http-equiv="Content-Type" co ...

  4. java js 转换_[Java教程]javascript 类型转换。

    [Java教程]javascript 类型转换. 0 2016-10-11 18:00:06 目录: 1 : 伪对象 2 : 转换为字符串 3 : 数字转字符串 4 : 转换为数字 5 : 转换为Bo ...

  5. 【Java Web前端开发】JavaScript基础

    文章目录 JavaScript: JavaScript: * 概念: 一门客户端脚本语言* 运行在客户端浏览器中的.每一个浏览器都有JavaScript的解析引擎* 脚本语言:不需要编译,直接就可以被 ...

  6. python是什么语言、即变量不需要显示声明数据类型-python变量声明及简单数据类型...

    以上代码将打印出两个结果,按照执行先后顺序,第一个print打印的是在他之前的变量值,如果这里不打印,在代码的最后只打印一次,那么它将始终打印最新记录的变量值,其他不打印 因此上在python程序中可 ...

  7. 内网环境下预览ArcGIS地图服务

    内网环境下预览ArcGIS地图服务 文章目录 内网环境下预览ArcGIS地图服务 1.背景 2.解决方案 2.1下载ArcGIS API for JavaScript 2.2本地部署ArcGIS AP ...

  8. 系统数据据结库设计理论mysql_基于JavaEE的报刊征订管理系统_JSP网站设计_MySQL数据库设计...

    目  录 摘  要I ABSTRACTII 第一章 绪论1 1.1课题背景1 1.2目的和意义1 1.3开发工具及技术1 1.3.1开发工具1 1.3.2 JSP技术2 1.3.3 JavaScrip ...

  9. JavaScript基础笔记

    今日内容 1. JavaScript基础 JavaScript: * 概念: 一门客户端脚本语言* 运行在客户端浏览器中的.每一个浏览器都有JavaScript的解析引擎* 脚本语言:不需要编译,直接 ...

最新文章

  1. cmder里ls、pwd、自定义的alias等一系列命令都无法使用
  2. python入门经典必备推荐基础教程
  3. 删除隐藏的旧网卡信息的解决办法
  4. 建一所希望小学需要600万!
  5. 【湖南】2021年下半年软考报考时间及通知
  6. 该如何在后期处理中,实现高亮描边的效果?
  7. view 冒号作用 组件中属性_如何解析名称中带有冒号的JSON?安卓/ Java...
  8. (一)golang工作区
  9. git每次更新都需要输入账号密码,如何解决?
  10. JS基础--子类型重写超类型方法原型链图解
  11. 人工智能时代,我们需要什么样的芯片?| 码书
  12. Spring MVC 学习总结(五)——校验与文件上传
  13. 固定ui大小_Material Design 响应式UI
  14. 用代码实现通过人人网的登录
  15. 论文阅读:LinkNet: Exploiting Encoder Representations forEfficient Semantic Segmentation
  16. 只需三步快速将flac转换mp3格式?
  17. struts中的javascript
  18. MATLAB函数判断绝对素数,自定义函数,找出 以内所有素数(质数)并计算它们的和,matlab...
  19. 《大数据: Flume 多个Agent 串联(AvroSource、AvroSink)》
  20. 20155305乔磊2016-2017-2《Java程序设计》第五周学习总结

热门文章

  1. 数字人事系统 java_凝心聚力 实现数字人事信息系统平稳运行
  2. CG 超写实眼球 maya 制作
  3. 7-3 超速判断 (10 分)
  4. Elasticsearch相关度评分算法(三):BM25(Okapi BM25)
  5. 设公共汽车上,司机和售票员的活动分别是如下
  6. cc-ui|一款基于uni-app框架开发的生态组件库
  7. 网件交换机基本配置命令,网工请收藏。
  8. css音乐字幕,css3实现音乐动画播放【原创】
  9. Python 异常捕获
  10. 吴恩达——成本函数公式