5、 JS this正则

this 关键字 函数的拥有者
1、函数中引用

var x = 0
function func() {
    this.x; // this指向window 打印出x为0
    this.x = 1; // this指向函数 打印出x为1
}
function func2() {
    this.x = 2;
}
func2()
func()
console.log(x) // 1

2、对象调用

var o ={};
o.a = 1;
o.action = function() {
	return this.a // this指向当前对象
};
console.log(o.action()) // 1

// 对象中调用外部函数
function func() {
    return this.a //this指向函数的调用者,也就是o
}
var o ={};
o.a = 1;
o.action = func; // func()调用函数,这里要使用func
console.log(o.action()) // 1

3、构造函数调用

// this指这个实例化新对象
function Fun(name,age) {
	this.name = name
	this.age = age
}
var fun = new Fun('tina',22)
var fun2 = new Fun('luck',22) // this指这个实例化新对象
console.log(fun.name) // tina
console.log(fun2.name) // luck

4、this指向

// 改变this指向 call(this,name,color) apply(this,[]) (在一个对象中调用另一个对象)
// 区别:this都是指向当前作用域,区别是传参不一样,apply传的是一个数组
        var a = '111';
        function func() {
            return this.a
        }
        var o ={};
        o.a = 1;
        o.action = func;
        console.log(o.action()) // 1 this指向对象
        console.log(o.action.call()) // 111 call为空时,this指向的是window

this 指向面試題案例:

var number = 1;
var obj = {
    number:2,
    showNumber:function(){
        this.number = 3;
        (function() {
            console.log('函數自調用',this.number) // 1
            // console.log('函數自調用',this) //window
        })();
        console.log(this.number); // 3
    }
}
obj.showNumber()

this 指向案例

        var b=1;
        var ob={
            b:2,
            f:function(){
                this.b=3;
                (function(){
                    console.log(this);//window
                    console.log(this.b);//1
                })(); 
                console.log(this);//object               
                console.log(this.b);//3
                console.log(obj.b);//3
            }
        }
        console.log(obj.b);//2
        obj.f(); //window 1 obj 3 3
        console.log(obj.b);//3

正则表达式简单写法

// 正则表达式写法
        var filter = /^[a-z]at$/;
        var filter2 = new RegExp('^[a-z]at$');
        var str = 'abc'
        if(filter2.test(str)) {
            console.log('ok')
        }else{
            console.log('err')
        }
// 整数或保留两位小数
	var ValidNumPoint=/(^(-)?[0-9]*$)|(^(-)?[0-9]+([.]{1}[0-9]{1,2})$)/;
	var sVal = "50.23"
	if(ValidNumPoint.test(sVal)){
    	console.log("true");
    }else{
    	console.log("false");
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值