this有关知识

一、this关键字

【什么是this?】

this是一个使用在作用域内部(块级作用域、函数作用域、全局作用域)的关键字。
this关键字是函数运行时自动生成的一个内部对象,只能在函数内部使用,总指向调用它的对象。
(全局很少使用,大部分在函数内部使用。)

  【this指向】
   根据运行时的不同,this指向的对象有所区别。
   在绝大多数情况下,函数的调用方式决定了this的值。

浏览器环境/全局环境下使用this:this指向window对象。

        console.log(this); //window
        console.log(this === window); //true

二、函数中的this指向

在函数中使用this:
不管函数怎么定义,不管函数在哪定义,只看函数的调用(箭头函数除外)。

代码如下(示例):

普通函数(直接调用/全局调用):this指向window
函数名()

        function fn() {
            console.log(this); //window
        }
        fn() //普通调用,this指向window

定时器函数:this指向window

        // setTimeout(function(){},0)
        setInterval(function(){},0)
        setTimeout(fn,0) //把fn函数当作定时器处理函数使用

自执行函数:this指向window

          (function(){})()
        // 以上都是全局函数,this指向window。
        // 对象调用函数:this指向的是xxx对象
        //xxx.函数名():
        // Math.random():
        // 问:a.b.c()函数中的this指向是?    答:a.b
        var obj = {
        // 把fn存储的地址赋值给了obj的f成员
        // 从现在开始obj.f和全局变量的fn指向同一个函数空间
           f:fn,
           name:'我是obj对象'
        } 
        obj.f() //d对象调用,this指向obj。

        setTimeout(obj.f,0) //把obj.f函数当作定时器处理函数使用
事件处理函数:this指向的是事件源(绑定在谁身上的事件)
xxx.onclick = function(){}
xxx.addEventListener('',function(){})

箭头函数不同于传统JavaScript中的函数,箭头函数没有自己的this。
它所谓的this是捕获其所在上下文的this的值,作为自己的this值。 

三、定时器

【setTimeout和setInterval的区别】
timeout:(体育比赛中的)暂停:超时;
interval:间隔:间隙.

 使用setTimeout()开启的定时器,"时间"一到,代码就会执行。
 即用来指定某个函数或某段代码在多少毫秒之后执行。

 setInterval()开启的定时器,"时间间隔"一到,代码就会执行一次。
 即每隔一段时间执行一个函数。
        setTimeout (function(){
            console.log(4);
        },2000)

【题目:最后的打印顺序是什么?】
第一种情况

        console.log(1);
        setTimeout(function(){
            console.log(2);
        },10)
        console.log(3); // 1,3,2

第二种情况

        console.log("A");
        setTimeout(function(){
            console.log("B");
        },0)
        console.log("C"); // A,C,B

setTimeout指定的代码,必须等到本次执行的所有同步代码都执行完,才会执行。

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了this关键字,函数中的this指向,定时器

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值