函数的三种调用方式

函数的三种调用方式,第1张

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

可以把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出现在实例方法中其实代表的是当前对象

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/736318.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-28
下一篇 2022-04-28

发表评论

登录后才能评论

评论列表(0条)

保存