代码之家  ›  专栏  ›  技术社区  ›  Naveed

如何以最佳和简单的方式解释“this”关键字?

  •  5
  • Naveed  · 技术社区  · 14 年前

    我使用“this”关键字已经很长时间了。但当有人要我解释的时候,我对如何解释感到困惑。我知道我可以在类的方法中使用它来访问同一类的任何变量和方法。

        class MyClass{
    
          function MyMethod1(){
            echo "Hello World";
          }
    
          function MyMethod2(){
            $this->MyMethod1();
          }
    
        }
    

    它是一个类的对象吗?我们不需要初始化它,它只能在类或任何其他类中使用。如何解释?

    谢谢

    6 回复  |  直到 9 年前
        1
  •  13
  •   Pindatjuh    14 年前

    类是对象的模型:它指定对象的外观(变量)以及它可以做什么(函数)。

    如果您声明一个类:您创建一个对象。如果创建类,可以使用“this”来引用对象本身。这就是为什么不能设置“this”,因为它与对象相关。它是一个特殊的只读变量。

        2
  •  5
  •   jldupont    14 年前

    this 引用类的当前对象实例。

    是传递给类方法的隐式参数:它的作用域是一个方法,并允许访问对象的所有成员。

        3
  •  2
  •   John Feminella    14 年前

    正如他们的名字所暗示的,实例方法在 实例 一个班的他们怎么知道该操作哪一个?就是这样 this 参数用于。

    当您调用一个实例方法时,您实际上是无形地传入了一个额外的参数:要调用它的对象。例如,当您拥有此功能时:

    class Basket {
      public function a() {
        $this-> ...;
        // ...
      }
      // ...
    }
    

    你打电话给我 $some_basket->a() 在幕后,你说的是 Basket::a($some_basket) . 现在 a() 知道哪一个 Basket 你想和他一起工作。这个特殊参数是什么? 引用:当前正在处理的对象。

        4
  •  2
  •   dfens    14 年前

    短路: $this 允许您访问对象变量(和方法) 编辑: 在类内:) 编辑2: (但不在类的静态方法中):d

        5
  •  2
  •   fredrover    14 年前

    有几个人用类似的术语解释过它,但我想补充一点,当与不熟悉面向对象编程的人交谈时,我解释说类定义是一个蓝图,对于一个房子,“这个”是您当时正在使用的实际房子。可能还有其他房子看起来完全一样,但这是特定的对象(房子)。

        6
  •  1
  •   JC.    14 年前

    类是对象的模板或“die”。

    让我们用经典的“自行车”例子。外面有很多辆闷闷不乐的自行车。但是,我们已经创建了一辆自行车,我们可以使用“this”关键字来引用“this”自行车。

    在更技术的意义上,类是将被实例化的对象的模板。在运行时,在一个对象被实例化或创建了它自己的实例之后,我们可以在内部使用关键字“this”来引用运行该方法的实例。