美文网首页
面向对象--第三弹this

面向对象--第三弹this

作者: 赵BW | 来源:发表于2017-04-20 17:47 被阅读0次

在前面的文章里提到了this,今天就详细的说下吧。
怎么判断this是指向谁的--谁调用了这个方法这个this就指向谁
在创建一个对象的时候有this,那他到底是什么?

  function Person(name){
        this.name = name;
        console.log(this);
  }
  var zhaobw = new Person("zhaobw");
  console.log(zhaobw);

运行后得到的结果:


运行后的结果

得出一个结论:this指向的是生成的对象。

  • 谁创建的对象就指向谁。
那普通的函数函数的this指向谁?
  function test(){
      console.log(this);
  }
  test();

运行后得到的结果

运行后的结果

得出一个结论:

  • 普通的函数的this指向window
setTimeout、setInterval
  document.addEventListener('click', function(e){
      console.log(this);//this 指向doucment
      setTimeout(function(){
          console.log(this);//this 指向window
      }, 200);
  }, false);

这两个的方法是指向window


看了上面的例子,是不是晕了。代码的情况那么多。我怎么知道this指向谁?

记住一句话,这个方法谁调用就指向谁。

为了方便理解:我们可以这么看--用call看

 fun.call(context,p1,p2);//context就是this,谁调用的。p1,p2就是函数参数

举个例子

  function test(){}
  test();

等同于

  function test(){}
  test.call(undefined,p1,p2);

重点来了,this就是undefined。在浏览有个规则就是context如果是null或者undefined,那么就会默认为window。
然后其他的就用这个方法去套,就好了。


最后在说两句

  • new constructor()==>this指向生成对象
  • 方法调用{a:1,b:2,c:function(){}}==>指向调用方
  • 函数调用==>指向全局对象
  • apply/call==>指向第一个参数。

相关文章

  • 面向对象--第三弹this

    在前面的文章里提到了this,今天就详细的说下吧。怎么判断this是指向谁的--谁调用了这个方法这个this就指向...

  • 面向对象--第二弹创建对象

    JS创建对象的方式:下面的例子,我们都是new一个人的对象。这个对象有方法和属性。 对象字面量: 我们创建了一个p...

  • 面向对象--第五弹继承

    继承是什么? 课本的介绍:子类可以继承父类的方法和属性,然后在这个基础上进行添加方法和属性。可以提高代码的复用性和...

  • 第2弹、面向对象 1

    类(calss) 属性 (属性:可以理解为游戏中人物属性) 成员变量(属于类,在堆中; 随类而存在; ...

  • 了解什么是Python面向对象

    今天马哥教育要跟大家分享的文章是了解什么是Python面向对象?也就是我们面向对象学习的第三节课,面向对象并不好理...

  • JavaScript面向对象及原型@小四

    第一节:JavaScript面向对象@小四 第二节:JavaScript面向对象@小四 第三节:JavaScrip...

  • 【Java进阶营】高频面试题八股文分享

    Java的特点 Java是一门面向对象的编程语言。面向对象和面向过程的区别参考第三道题。 Java具有平台独立性和...

  • Java基础day08笔记:多态|多态中成员的特点|多态的应用示

    01-面向对象(多态-概念) 接下来说一下面向对象的第三个特征:多态。 何为多态呢? 其实...

  • 可拖动对话弹框的模块化实现

    先上效果图 利用面向对象的方法做了一个弹框,点击不同按钮可创建不同样式的弹框,弹框出现后,对应的按钮不可用,需处理...

  • PHP全栈学习笔记8

    面向对象的基本概念,面向对象编程,oop,面向对象,面向对象的分析,面向对象的设计,面向对象的编程,什么是类。 类...

网友评论

      本文标题:面向对象--第三弹this

      本文链接:https://www.haomeiwen.com/subject/jnjlzttx.html