JS进阶 七——this

本文深入探讨了JavaScript中this的概念及其确定方式。通过实例解析,展示了this在不同上下文中的指向,包括函数调用、对象方法、构造函数以及call方法的使用。此外,还分析了闭包中this的特殊行为,帮助读者更好地理解和掌握JavaScript的核心特性。
摘要由CSDN通过智能技术生成

1.抛出两个问题

1.1this是什么?

  * 任何函数本质上都是通过某个对象来调用的,如果没有直接指定就是window
  * 所有函数内部都有一个变量this
  * 它的值是调用函数的当前对象

1.2如何确定this的值?

  * test(): window
  * p.test(): p
  * new test(): 新创建的对象
  * p.call(obj): obj
<script type="text/javascript">
  function Person(color) {
    console.log(this)
    this.color = color;
    this.getColor = function () {
      console.log(this)
      return this.color;
    };
    this.setColor = function (color) {
      console.log(this)
      this.color = color;
    };
  }

  Person("red"); //this是谁? window

  var p = new Person("yello"); //this是谁?	 p

  p.getColor(); //this是谁? p

  var obj = {};
  p.setColor.call(obj, "black"); //this是谁? 	obj

  var test = p.setColor;
  test(); //this是? window

  function fun1() {
    function fun2() {
      console.log(this);
    }

    fun2(); //this是?	 window
  }
  fun1();
</script>

p.setColor.call(obj, “black”); //this是谁? obj
好好理解这句话!!!


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值