超级杨过敏关于js函数调用方法call(this)的简单分析

今天发现了this的一个奇妙作用,那就是在call中和apply中指代的都是全局。见下代码:

var money= "想要拥有一个亿"
       var obj1={
            money:"我拥有一个亿",
            foo:function() {
                console.log(this.money);
            }
       }
       var obj2={
           money:"同桌拥有一个亿"
       }
    obj1.foo(); //我拥有一个亿
    obj1.foo.call(this) //你猜是什么??  刮开图层查看答案
       obj1.foo.call(obj2) //同桌拥有一个亿

obj1.foo() 指向obj1下的foo,因此直接打印“我拥有一个亿”。

call函数修改函数内部this值指向

obj1.foo.call(this) 由于有了call,因此指向全局,将打印“想要拥有一个亿”

obj1.foo.call(obj2) ,由于有了call,因此指向obj2,将打印“同桌拥有一个亿”

this

this的指向跟函数调用有关

如果函数使用"()"来调用,那看一下括号前面是不是函数名,如果是,看函数名前面有没有对象

有,this指向该对象

没有,

Nodejs环境中 this --> global对象

浏览器环境中 this --> window对象

nodejs中的this和在浏览器中javascript中的this是不一样的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值