一、正则表达式

1.最简单的正则

    关键字原文 /原文/gi后缀 g 找全部  i 不区分大小写
复制代码

2.备选字符集

/^[备选字符集]$/1.一个中括号直观一位字符2.默认只要满足就不管后续,希望从头到尾都满足:前加^ 后加$3.表示出 xxx之外的字符   [^xxx]   [^0-9] 表示出0-9之外的字符
复制代码

3.预定义字符集

\d 一位数字
\w 一位字母、数字或下划线
\s 一位空白字符(空格、\t、\n)
. 一位除了\n之外的字符
复制代码

4.量词:规定一个字符集出现的次数

1.有明确数量{n,m} 最少n位,最多m位{n,} 最少n位,最多不限{n} 必须n位
2.没有明确数量?  前面相邻的字符集可有可无,最多一位*  前面相邻的字符集可有可无,最多不限+  前面相邻的字符集最少一位,最多不限
复制代码

5.选择分组

选择:在两个规则中选一个规则1 | 规则2
分组:将多个字符集淋湿组成一组子规则()
(规则1 | 规则2)
复制代码

6.指定匹配位置

^ 开头
$ 结尾
两者同时使用,前加^后加$表示从头到尾都匹配(一般在做验证的时候使用)
复制代码

7.密码强度

预判公式:/?![0-9]+$/ 不能全由数字组成/?![0-9a-z]/ 不能全由数字,小写字母和他俩组合而成
复制代码

8.搭配正则的两个字符串API

1.切割 split(reg)
2.替换 replace(reg,“新内容”)replace(正则表达式,function(a,b,c){操作 })a:匹配到的当前关键字 b:关键字的下标 c:原文当reg中出现分组,残水会更多,从b开始为分组,最后一个为原文
复制代码

9.正则对象

reg.test(str)
满足正则返回true,不满足返回false
复制代码

二、Math对象

1.一个常用属性

Math.PI 表示数学中的π
复制代码

2.取整

上取整:Math.ceil()
下取整:Math.floor()
四舍五入:Math.around()
以上3种方法不如ParseInt,parseFloat,toFixed()
复制代码

3.乘方开方

乘方:Math.pow(底数,幂)
开方:Math.sqrt()只能开平方
复制代码

4.最大值最小值

Math.max/min(num1,num2....)
问题:不能传数组
解决:Math.max/min.apply(Math,arr)
复制代码

5.绝对值

Math.abs()
复制代码

三、Date对象

1.创建

1.var date = new Date()
2.自定义:var date = new Date(yyyy/mm/dd hh/mm/ss)var date = new Date("yyyy""mm""dd""hh""mm""ss")
3.复制一个日期var date = new Date(date1)
复制代码

2.操作

两个日期相减会得到一个毫秒差
创建的最后一个方法var date = new Date(毫秒数)
复制代码

3.API

获取:            设置:
getFullYear      setFullYear
getMonth         setMonth
getDate          setDate
getDay           setDay
getHours         setHours
getSeconds       setSeconds
getMintues       setMintues
getMillseconds   setMillseconds
复制代码

4.如果希望对一个日期进行+ -

date.setxxxx(date.getxxxx() +/- num)
复制代码

四、Error对象

1.浏览器自带的四种错误

语法错误: SyntaxError 多半是语法符号错了
引用错误: ReferenceError  没有创建就直接使用
类型错误: TypeError   不是它的方法却使用了
范围错误: RangeError  只有toFixed(n)当n超出0-100的范围时
复制代码

2.只要报错就会导致后续代码终止

try{可能出错的代码 } catch(err){ err 为报错信息}
try catch的效率非常低可以使用if else代替
复制代码

3.抛出自定义报错

throw new Error()
只要是报错就会卡主后续代码
复制代码

五、Function对象

1.创建:

构造函数:var 函数名 = new Function("参数...""函数体")
何时使用:如果你的函数体是动态拼接的
复制代码

2.重载

相同函数名,传入参数不同,可以自动执行相应的操作,但是js不允许多个同名函数会被覆盖
解决:在函数中有一个arguments对象,可以接收传入的所有参数arguments是一个类数组,可以使用下标,length,遍历
arguments作用1.用arguments实现重载:通过函数内部判断arguments执行不同操作  2.以后有没有形参都无所谓3.正式开发中有可能将多个函数整合为一个函数
复制代码

3.匿名函数:没有名字的函数

1.函数的自调:为了节约内存
(function(){  })()
2.函数的回调:不是自调就是回调将函数作为实参传给另一个函数调用arr.sort(function(){})str.replace(reg,function(){})onclick = function(){}
复制代码

4.函数执行原理:

1.程序加载时创建执行环境栈(ESC),保存函数调用顺序的数组。首先压入全局执行环境(全局EC),全局EC引用着全局对象Window,Window中保存着全局变量
2.函数定义时创建函数对象:封装代码段在函数对象中有一个scope属性:记录着函数的作用域来自哪里全局函数的scope都指向window
3.调用前在ECS中压入新的EC(函数的EC)创建活动对象(AO),AO保存着本次函数调用时使用到的局部变量在函数的EC中有一个scope chain属性(作用域链)引用着AOAO有一个属性parent属性指向scope指向的对象
4.调用时:正因为有前面3步,才有变量的使用规则优先使用自己的,自己没有找全局,全局没有就报错
5.调用完函数的EC会出ECS栈,AO自动释放,局部变量也就自动释放了
复制代码

5.作用域链

以函数的EC的scope chain 为起点经过AO逐级引用,形成的一个连式结构
作用:查找变量,带来变量的使用规则
复制代码

6.闭包

希望保护一个可以反复使用的局部变量的一种词法结构
如何使用:1.两个函数嵌套2.外层函数创建出受保护的变量3.外层函数return出内层函数4.内层函数操作受保护的变量
强调1.判断是不是闭包:有没有两个函数嵌套,返回内层函数,内层函数在操作外层变量2.外层函数调用了几次,就创建了几个闭包,手保护的变量就有了几个副本3.同一次外层函数调用返回的内层函数都是在操作同一个受保护的变量
缺点:受保护的变量永远不会被释放,使用过多会造成内存泄漏,不可多用
问题:哪里需要使用闭包   (防抖节流)3个需要防抖节流的事件1.onmousemove()2.oninput()3.window.resize()
防抖节流公式:elem.事件 = function f1(){var timer = null;return function(){if(timer){clearTimeout(timer);timer = nulll;}timer = setTimeout(function(){操作;},1000)}}var 函数名 = f1();
复制代码

六、object对象

1.面向对象三大特点:封装,继承,多态
2.创建自定义对象1.直接量方式var obj = {属性名:属性值方法名:function(){}}访问对象的属性,方法obj.属性名   ===   obj["属性名"]obj.方法名   ===   obj["方法名"]2.预定义构造函数var obj = new Object();3.自定义构造函数:2步1.function 类名(a,b,c...){this.a = a;this.b = b;this.c = c;...}不要在里面创建方法,每个方法都会创建一个方法,浪费内存2.调用构造函数var obj = new 类名(实参1...)面向对象:优点:所有的属性和方法都保存在一个对象中每个功能特地分开写,便于维护铁索连舟,一个方法触发多个方法联动缺点:this的指向问题
3.继承:父元素(原型对象)的属性和方法,子对象可以直接使用,只要多个子对象公用的属性和方法都集中定义在原型对象中。
4.找原型对象1.对象名.__proto__2.构造函数名.prototype
5.原型链每个对象都有一个__proto__属性,可以一层一层的找到每个对象的父元素,形成的一条链式结构作用:可以找到原型对象的所有属性和方法原型链的最顶层是Object的原型,再往上为null
6.判断属性是共有还是私有obj.hasOwnProperty("属性名")为true时说明为私有,为false时可能为共有或者没有解决:if(obj.hasOwnProperty("x")){为私有}else{if(x in obj){共有}else{没有}}
7.删除/修改私有,共有属性私有:修改 obj.属性名 = 新值删除 delete obj.属性名共有: 先找到原型,再修改或删除
8.判断x是否为一个(数组)1.判断x是否继承Array.prototypeArray.prototype.isPrototypeOf(x)2.判断x是否有Array创建x instanceof Array3.Array.isArray(x) es5提供,老IE不支持,此方法只有数组有4.输出 对象的字符串形式

JavaScript03相关推荐

  1. python课程费用-深圳python课程费用

    深圳python课程费用 来源:教育联展网 编辑:粉色de皮卡丘 发布时间:2019-09-30 人工智能Python培训 到北大青鸟学Python 技能提升高薪就业 快速咨询 学习Python有哪些 ...

  2. python培训班时间 费用-深圳python培训班大概多少费用

    深圳python培训班大概多少费用 来源:教育联展网 编辑:粉色de皮卡丘 发布时间:2019-08-20 人工智能Python培训 到北大青鸟学Python 技能提升高薪就业 快速咨询 学习Pyth ...

  3. python学习费用-深圳python学习费用多少

    深圳python学习费用多少 来源:教育联展网 编辑:粉色de皮卡丘 发布时间:2019-08-16 人工智能Python培训 到北大青鸟学Python 技能提升高薪就业 快速咨询 学习Python有 ...

  4. python学习费用-深圳python学习费用

    深圳python学习费用 来源:教育联展网 编辑:粉色de皮卡丘 发布时间:2019-09-06 人工智能Python培训 到北大青鸟学Python 技能提升高薪就业 快速咨询 学习Python有哪些 ...

  5. python培训班深圳-深圳python人工智能培训班

    深圳python人工智能培训班 来源:教育联展网 编辑:粉色de皮卡丘 发布时间:2019-10-11 人工智能Python培训 到北大青鸟学Python 技能提升高薪就业 快速咨询 学习Python ...

  6. wxpython+MySQL实现学生信息管理系统

    初学者,仅供学习交流 Python学习两周时间了,这是我目前编写的比较满意的一个程序,有以下几个方面的经验总结: 1.布局管理是可视化编程的基础思维,尽量避免定点式布局,不规则分布的各种控件可以局部先 ...

  7. python培训深圳-深圳Python培训班哪个好

    深圳Python培训 北大青鸟Python课程学到家 高薪就业人人夸 快速咨询 北大青鸟Python培训,渗透式教学服务体系挖掘潜能,学得会.学得好.学得快.专教学反馈系统.教学保障系统.学习测试系统 ...

  8. python编程课程-深圳Python编程课程

    深圳Python编程课程 来源:教育联展网 编辑:粉色de皮卡丘 发布时间:2019-09-04 人工智能Python培训 到北大青鸟学Python 技能提升高薪就业 快速咨询 学习Python有哪些 ...

  9. 深圳python培训比较好的机构-深圳python培训哪家机构好

    深圳python培训哪家机构好 来源:教育联展网 编辑:粉色de皮卡丘 发布时间:2019-09-19 人工智能Python培训 到北大青鸟学Python 技能提升高薪就业 快速咨询 学习Python ...

最新文章

  1. Android 属性动画(Property Animation) ObjectAnimator的介绍
  2. Spring boot的Hello World入门
  3. 我很懒,什么都没留下系列 之 教你上手React服务端渲染(React SSR) HMR
  4. [转]内存泄漏简单检测
  5. maven 整体打包_Spirng boot maven多模块打包不踩坑(示例代码)
  6. matlab调用哈希表,ros与matlab联动使用
  7. windows下安装、卸载mysql服务
  8. NETGEAR拒绝连接请求_详解 Tomcat 的连接数与线程池
  9. 1000道Python题库系列分享十(37道)
  10. java用cookie最新浏览商品_jQuery.cookie.js实现记录最近浏览过的商品功能示例
  11. LINUX开源监控平台Nagios(服务监控配置)
  12. ShortUrl短网址算法
  13. 超好用的Redis管理及监控工具,使用后可大大提高你的工作效率!
  14. OTL音频功率放大器
  15. c语言操作符的自我总结hhhhhhhhh
  16. JAVA四大名著(程序员必读)
  17. 右键文件用指定软件打开
  18. celery使用post方法解决方案
  19. MySql 查询优化
  20. 使用Proteus8进行8086实验仿真,解决找不到source的问题

热门文章

  1. 翻译工作必备,英文标点符号使用规则
  2. 【学术渣解惑】ICLR是个什么样的会议?
  3. WebSocket入门介绍及编程实战
  4. round( )函数:四舍五入
  5. 域名怎么解析到服务器上
  6. 从0到1构建新闻长文本分类系统
  7. self和init的用法
  8. dnf跨几服务器比较稳定,DNF极具特色的几个跨区,跨6知名度最高,这个跨区打团不用挤频道...
  9. 全新的Unity移动游戏优化解决方案
  10. 下一清分日期是几年前_清分日期2018年11/8号,实习期在2019年1/1号 B2清分日期在实习期前...