js:正则运用、ES6新增、this指向、面向对象

一、正则

正则的创建:
	 字面量  :  var  num = / a /;
	构造函数: var reg = new RegExp(“ b ”)
修饰符:

i----表示忽略大小写
g : 全局匹配;
m: 多行匹配;
 正则是用于验证一个字符串是否符合正则表达的要求。
 test方法检测:返回布尔值;
 exec( )方法检测:获取满足该正则表达式的字符,以数组的方式返回信息
 complie( ) ; 重写正则表达式
字符串方法:
	search():获取满足条件的第一个字符下标,如果没有则返回-1
	march( ):有g修饰符时,以数组的方式返回所有满足条件的字符;
		     没有g修饰符时,返回结果跟exec相同;
	replace():修改;
var  bu = “ a ”; 

/ . / bu 中只要有任意字符就ok ;
\ 表示转义 将右边的一个有特殊含义字符转换成普通字符;
/ \ . / 表示bu 中只要包含了点就ok;
\d :匹配0~9的数字;
\D :匹配除了数字以处的任意字符
\w :匹配a-zA-Z0-9_
\W :匹配所有除了数字字母和下划线以外的其它字符
\s :匹配空格字符
\S :匹配非空字符
^:匹配开头 /限定开头
$:匹配结尾 /限定结尾
正则-限定符

  • : 匹配一个或多个;
    var str = “ab”;
    var reg = /^ac+b$/;//以a开头b结尾,中间可以是1个或多个c
    * :匹配0个或多个
    ? :匹配0个或1个
    {3}:匹配3次 {n}匹配n次
    {3,}:最少匹配3次 {n,}最少匹配n次

       {3,6}:最少匹配3次,最多6次 {n,m}匹配n-m次
    

    //特殊符
    //(): 限定的一组元素
    // |: 表示或者
    // -:范围,比如a-z表示a到z之间的任意小写字母
    // [ ]:字符集合,表示写在[ ]中的任意一个都行
    // []:反字符集合。表示只要不是写在[]中的,其它的都行
    [\u4e00-\u9fa5] 匹配中文
    var reg = /a[\u4e00-\u9fa5]+b$/;//只要不在[]的最开头就没有取相反的含义

二、 ES6新增特性

【说明】ES5和ES6是javascript语法发展过程中的新增版本,对一些语法及功能性方法作了增加,因些,对于一些旧的浏览器来说,有很大的兼容性问题。因些,我们在做一些开发工作时,对一些浏览器的兼容有一定要求时,一定要慎用。

    symbol类型==基本数据类型
01、ES6新增语法-let和const声明变量

以前 var a = 9;不能重新声明。会覆盖上的。
新增 let a = 9;不能重复声明;会报错。
const a =9 ;不能重复声明;会报错。

{
console.log( b );变量提升
var b = 7;
}
有自己的块级区;
{
console.log( b );程序报错
let b = 7;
}

var let const 三者区别

let 声明的变量都可以改变,不仅可以改变值还可以改变引用。
const 声明的变量不能被改变。不能修改引用地址,但可以修改数据;
var  可以重复声明,有变量提升;

两者区别:let 可以修改变量的值和引用。没有变量提升;
const 不能修改栈中的值,只能修改堆中的数组。没有变量提示;
【未来使用const 来声明常量值】
常量和变量在书写上的区别,变量小写,常量大写

总结:
1、let声明的时候可以不赋值,const声明的时候必须赋值

2、let声明的变量,可以改变,const声明的变量,不可以改变(引用数据类型的地址不可变,数据可变)。

3、var声明的变量有变量提升,没有块级作用域,可以重复声明,let和const都相反

let关键字 let 块级作用域
let 声明变量
let 不允许重复声明变量
let 必须在某个{}内部使用
let 在作用域范围内 声明的变量没有变量提升; 暂时性死区:通过let声明的变量 变量声明之前该变量不可用,这种现象就称作暂时性死区
let 块级作用域案例:点击某个li,获取li在页面的下标

三、重点:this指向总结

自定义的函数中this指向:window;
事件处理程序中的this指向:当前的事件源;
对象下的方法中的this指向:当前对象;
箭头函数中的this指向: 父级作用域;
构造函数中的this指向:指向调用该构造函数所创建的实例对象;
严格模式下全局函数的this返回的是undefined;
定时器中的this指向window

【this 指向,在箭头函数中没有自己的this指向, this来源于声明时所在父级作用率;】

this指向不是一成不变的,可以通过bind(), call(),apply()将函数中的this强制改变;

四、箭头函数

箭头函数只能用于匿名函数
语法格式:
var box = ( )=> { };
箭头函数的参数:
var box = (a,b) => {
return a+b;
}
box( 3, 7);

只有一个参数的可以省略小括号;
只有一行语句的可以省略花括号;
箭头函数中没有自己的this指向,this指向是跟该函数的上下级有关(父级作用率)

   箭头函数中没有arguments对象
   可以使用展开运算符来获取传入的参数(…arg)
   ES6-新增bind(val)方法:将函数内部中的this指向强制改变

五、解构赋值

var [a,b,c] = [1,2,3]
console.log(a,b,c);
var { uname,age } = { uname : "Tom" , age : 23 };
console.log( uname,age );

好处:
1.可以一次性定义多个变量
2.可以让一个函数返回多个值
3.可以作用在函数的传参上,以对象的方式传递,可以无视参数的顺序,形参与对象的键命名要一致。
4.可以轻松实现两个数的交换

六、模版字符串

` ` ,是ES6 中新增的一种定义字符串的方式

模版字符串与单双引号字符串区别:

 01、 在模版字符串中的内容可以换行书写,单双引号字符串不行;
 02、 在模版字符串中的内容可以通过${ }直接书写变量,单双引号字符串不行;

七、展开运算符:…

 1、当该符号出现在数组前面时,是直接输出数组中所有元素;
 2、当该符号出现在函数的形参前面时,时传入的所有实参统一放在一个一个数组中;
 3、当该符号出现在对象前面时,是该对象中的键值对获取出来,作为当前对象中的键值对;

八、Symbol数据类型

是ES6 新增的一种原始数据类型,表示独一无二的意思,在该方法中的参数

九、面向对象

面向对象 是一种高级的开发思想
构造函数是一种特殊的函数;
面向对象的三大特征:
01、封装。 02、继承 。 03、多态(js没有多态)
shen
构造:可以用new 关键字创建
构造函数的名称是一个大写字母,不是规定,是原则

构造函数描述属性和方法

构造函数中的
var top = new Person ( “张三”,10,“110”)
new关键字创建出来的对象,是perso构造函数的的实例化对象
在不同的实现对象下,两个方法有不同的地址,非常占用内存

 Prototype 是函数中自动生成的一个属性,这个属性是一个对象;
【在任何函数中都有,但只有构造函数有用】

 eat方法,在所有实例对象下都一个共同地点
【eat=function(){}行为方式】

面向对象 new关键字
1.创建了一个空对象,将这个对象返回
2.将

bind:可以将事件处理程序中的this指向

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值