函数的三种调用方式(this指向)

一、函数三种执行模式 : 全局函数 、 对象方法 、 构造函数

可以把this 当做中文的  谁 `调用` 我,我就指向谁
1. 全局函数 : this指向window
2. 对象方法 : this指向对象
3. 构造函数 : this指向new创建的空对象

1. 全局函数

//1.全局函数
        function fn(){
            console.log('111111')
            console.log(this);
        }
        fn() //window.fn()

2. 对象方法

    //2.对象的方法
        let obj = {
            name:'班长',
            sayHi:function(){
                console.log('我是喜羊羊')
                console.log(this) 
            }
        }

        obj.sayHi()
        //将fn的地址赋值给sayHi
        obj.sayHi = fn
        //此时this指向obj,this指向跟声明没有关系。取决于函数是如何调用的
        obj.sayHi()

 3. 构造函数

   //3.构造函数
        function Person(name,age){
            //(1)创建一个空对象  (2)this指向这个对象 (3)执行赋值代码 (4)返回这个对象
            //this :指向new创建的哪个对象
            console.log(this)
            this.name = name
            this.age = age
        };

        let p1 = new Person()//构造函数
        //没有加new,以全局函数方式执行。此时this就是window,函数里面其实是给window添加属性(全局变量)
        Person('张三',18)//全局函数
        console.log(name)
        console.log(age)

4. 总结: 

4.1 this指向(它就是一个环境对象)

4.2 面试中经常会问的 小技巧 :

1. 没点没new是window,

2. 有new是实例

3. 有点是点左边的对象

4.3 this不能使用在静态方法中

4.4 this出现在实例方法中其实代表的是当前对象

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值