JavaScript正则、闭包和匿名函数

笔记

一、继承补充

1.对象冒充

借助call或apply方法来修改父类的构造函数中的this指向,来完成属性的继承。

       function Student(name) {
            this.name = name;
        }

        Student.prototype.study = function () {
            console.log('我爱学习');
        };

        function smallStudent(tag, name) {
            this.tag = tag;
            //需要为小学生添加name属性           
            //    Student.call(this,name);//对象冒充
            Student.apply(this, [name]);
        }


        var ss = new smallStudent('红领巾', '小明');
        console.log(ss);

注意:由于方法在原型中,无法被子类继承

2.混合继承(对象冒充+原型链)

使用对象冒充完成属性的继承,使用原型链完成方法的继承

该方案是一个相对理想的继承方案(最常用的继承方案)

  		function Student(name) {
            this.name = name;
        }

        Student.prototype.study = function () {
            console.log('我爱学习');
        };

        function SmallStudent(tag, name) {
            this.tag = tag;
            //需要为小学生添加name属性           
            //    Student.call(this,name);//对象冒充
            Student.apply(this, [name]);
        }

        SmallStudent.prototype=new Student();//原型链继承

        var ss=new SmallStudent('红领巾','小强');

二、正则

常用来进行数据的校验和字符串的操作

1.创建正则
var p=new RegExp();//
var p=//;
2.正则修饰符

//修饰符

  • g 全局匹配
  • i 忽略大小写
  • m 多行匹配
/hello/g
/hello/gi
/hello/ig
3.正则搭配字符串使用

可以使用正则表达式来对字符串进行快速处理

  • search
  • match
  • replace
4.正则对象的方法
  • test 校验字符串 true false
  • exec 校验 满足返回数组 null
        var str='0123456123';
        // var tag=/123/.test(str)
        var tag=/123/.exec(str);
        console.log(tag);
5.元字符
//常见的元字符:
/*
	.       除了换行和结束符之外的任意字符
	[]      []中可以放置任意内容;[]的意思是匹配任意一个
	[a-z]
	[0-9]   表示范围       [0-9a-zA-Z]
	[A-Z]
	[^0-9]  非    非数字   [^a-zA-Z]  非字母
	
	\d       数字    [0-9]
	\w       单词  数字和字母  [0-9a-zA-Z]
	\s       换行 缩进 空格
	\D       非数字     [^0-9]
	\W       非数字和字母
	\S       非.....

*/

6.量词
/*
	{m,}       大于等于m
	{m,n}      大于等于m,小于等于n
	{m}        m个
	+          至少一个
	*           0或多个
	?          0或一个
*/

/*
	^      开头
	$      结尾
	\      转义字符
*/

三、匿名函数

没有名字的函数,就是匿名函数

由于匿名函数没有名字,不能通过名字来调用执行

所以,可以通过自执行来完成函数的执行。

        (function (){
            console.log('yes');
        })();

匿名函数可以传递参数,也可以有返回值。

在陌生的开发环境中,使用匿名函数非常好,既可以立即执行,又可以不会污染变量作用域

四、闭包

闭包就是能够读取其他函数内部变量的函数(函数里面套函数,内部函数访问外部函数变量),在本质上,闭包是将函数内部和函数外部连接起来的桥梁。

闭包中的变量会一直存储在内存中,类似全局变量

1.闭包的应用场景:

      //i是一个全局变量  for循环执行完了之后i的值4
        //点击li,执行事件函数,打印i,   全局变量的i值为4


        var lis = document.querySelectorAll('ul li');
        for (var i = 0; i < lis.length; i++) {
            (function (i) {//形参
                lis[i].onclick = function () {
                    console.log(i);// 0  1  2  3
                };
            })(i);//实参

            // (function (a) {
            //     lis[a].onclick = function () {
            //         console.log(a);// 0  1  2  3
            //     };
            // })(0);//实参
            //..
        }

//当点击事件执行时,打印i,打印是局部变量i,不再是全局变量i

闭包可以模拟对象的私有属性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值