this 关键字学习笔记(一)

大家都知道,**this可以用在构造函数之中,表示实例对象。**除此之外,this还可以用在别的场合。但不管是什么场合,this都有一个共同点:它总是返回一个对象

记住:this就是属性或方法“当前”所在的对象。

另外,一个需要注意的是:
只要函数被赋给另一个变量,this的指向就会变。
在这里插入图片描述
上面代码中,obj.getName方法被赋值给变量fn1,那么这个方法getName内部的this就会指向fn1运行时所在的对象,即window,我们可以试一试下面代码证实一下:

        var obj = {
            name:'Dean',
            city:'Hefei',
            hairColor:'Black',
            height:173,
            getName: function(){
                console.log(this);
                return 'name: ' + this.name;
            }
        }
        console.log(obj.getName()); //输出name: Dean

        var name = 'wade';
        var fn1 = obj.getName;
        console.log(fn1()); //输出name: wade

输出结果:
在这里插入图片描述
蓝色框内是this指向的obj对象,红色框内是this指向的window对象

看一个网页编程的例子:

<body>
    <input type="text" name="age" size=3 onchange="validate(this,18,99);">
    <script>
        function validate(obj, min, max) {
            if ((obj.value < min) || (obj.value > max)) {
                alert('Invalid Value!');
            }
        }
    </script>
</body>

上面代码是一个文本输入框,每当用户输入一个值,就会调用onchange回调函数,验证这个值是否在指定范围。浏览器会向回调函数传入当前对象,因此this就代表传入当前对象(即文本框),然后就可以从this.value上面读到用户的输入值。
在这里插入图片描述
在这里插入图片描述

总结一下,JavaScript 语言之中,一切皆对象,运行环境也是对象,所以函数都是在某个对象之中运行,this就是函数运行时所在的对象(环境)。这本来并不会让用户糊涂,但是 JavaScript 支持运行环境动态切换,也就是说,this的指向是动态的,没有办法事先确定到底指向哪个对象,这才是最让初学者感到困惑的地方。

本文参考了网道的这篇文章网道 | this 关键字

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值