HarmonyOS NEXT鸿蒙开发 ArkTS:this关键字 作者:马育民 • 2025-10-22 23:04 • 阅读:10003 # 介绍 `this` 关键字是 Java 常用的关键字,可用于成员方法中,表示 **当前对象** ### 关于 “我” 的理解 李雷说:“我叫李雷”,此处的 `我` 表示李雷 韩梅梅说:“我考了90分”,此处的 `我` 表示韩梅梅 每个人说的 `我`,`我` 表示说话人自己 ### 关于 this 的理解 `this` 相当于 `我`,表示当前对象 每个对象都有 `this`,`this` 表示的是当前这个对象 ### 注意 不能在 **静态方法** 中使用 # 应用场景 - 当方法中 **局部变量** 和 **成员变量** **同名**,在不改 **变量名** 的情况下,访问这个被覆盖的成员变量,必须使用 `this` - 构造方法、成员方法中给 **成员变量** 赋值、访问 **成员变量** # 构造方法中使用 this 在构造方法中,给 **成员变量 赋值**、**访问成员变量** 有一个类 `Student` 的定义如下: ``` class Student { private name = ""; // 名称 private age = 0; // 年龄 } ``` 在上述代码中 `name` 和 `age` 的作用域是 `private`,因此在 **类外部 无法 对它们的值进行设置**。 为了解决这个问题,可以为 `Student` 类添加一个构造方法,然后在构造方法中传递参数进行修改。代码如下: ``` // 创建构造方法,为上面的3个属性赋初始值 Constructor(name:string,age:number) { this.name = name; // 设置名称 this.age = age; // 设置年龄 } ``` 在 `Student` 类的构造方法中使用了 `this` 关键字对属性 `name` 和 `age` 赋值,`this` 表示 **当前对象**。 语句 `this.name = name` ,等号左边的 `this.name` 是指 **当前对象** 的 **成员变量 name**,等号右边的 name 表示参数传递过来的数值。 对 `Student` 类进行测试,代码如下: ``` let lilei = new Student("李雷",20); System.out.println("名称:"+lilei.name+"年龄:"+lilei.age); ``` 运行该程序,输出的结果如下所示: ``` 名称:李雷 年龄:20 ``` # this.方法名 ### 在成员方法中,给成员变量赋值、访问成员变量 同上面的构造方法 ### 一个成员方法,访问另一个成员方法 假设定义了一个 `Dog` 类,这个 `Dog` 对象的 `run( )` 方法需要调用它的 `jump( )` 方法,`Dog` 类的代码如下所示: ``` class Dog { // 定义一个jump()方法 public jump() { console.log("正在执行jump方法"); } // 定义一个run()方法,run()方法需要借助jump()方法 public run() { this.jump(); // 这里的this不可以省略 System.out.println("正在执行 run 方法"); } } ``` 原文出处:http://malaoshi.top/show_1GW25csKgBju.html