首页 > 其他分享 >This关键字

This关键字

时间:2024-08-02 10:08:27浏览次数:14  
标签:函数 指向 对象 JavaScript 关键字 name

This关键字

this关键字在编程语言中,尤其是JavaScript和Java中,扮演着重要的角色。它主要用于指代当前对象或当前执行环境的上下文。虽然this关键字的具体用法可能因语言而异,但我可以基于JavaScript和Java的通用概念,总结this关键字的五种常见用法:

1. 在对象方法中引用当前对象

在JavaScript中,当this出现在对象的方法中时,它通常指向调用该方法的对象。这是this最直观和常用的用法之一。

var person = {  
    firstName: "John",  
    lastName: "Doe",  
    fullName: function() {  
        return this.firstName + " " + this.lastName;  
    }  
};  
  
console.log(person.fullName()); // 输出 "John Doe"

在Java中,this也用于在类的方法中引用当前对象,但用法略有不同,主要用于区分成员变量和局部变量。

public class Student {  
    String name;  
  
    public void setName(String name) {  
        this.name = name; // this.name 表示类的成员变量,name 表示方法参数  
    }  
}

2. 单独使用时指向全局对象

在JavaScript中,如果this在函数体内单独使用(即非严格模式下),并且该函数不是作为对象的方法被调用,那么this将指向全局对象(在浏览器中是window)。

function myFunction() {  
    return this;  
}  
  
console.log(myFunction() === window); // 在浏览器中输出 true

在严格模式('use strict')下,this将是undefined。

3. 在事件处理函数中引用触发事件的元素

在HTML元素的事件处理函数中,this通常指向触发事件的元素。

<button onclick="console.log(this.textContent)">点击我</button>

点击按钮时,控制台将输出按钮的文本内容。

4. 使用call()和apply()方法改变this的指向

在JavaScript中,call()和apply()方法允许你显式地设置函数体内this的值。

var person1 = {  
    fullName: function() {  
        return this.firstName + " " + this.lastName;  
    }  
};  
  
var person2 = {  
    firstName: "Jane",  
    lastName: "Doe"  
};  
  
console.log(person1.fullName.call(person2)); // 输出 "Jane Doe"

5. 箭头函数中的this绑定

ES6引入的箭头函数不绑定自己的this,它会捕获其所在上下文的this值作为自己的this值。这意味着在箭头函数中,this的指向不会改变,它总是指向定义时上下文中的this。

var obj = {  
    x: 42,  
    getX: function() {  
        return () => this.x;  
    }  
};  
  
console.log(obj.getX()()); // 输出 42

在这个例子中,尽管getX方法返回了一个函数,但返回的函数是一个箭头函数,它捕获了getX方法中this的值(即obj对象),因此即使在外部调用返回的函数,this仍然指向obj。

总结

this关键字是JavaScript和Java等面向对象语言中非常重要的一个概念,它用于引用当前对象或执行环境的上下文。根据上下文的不同,this的指向也会有所不同。理解this的用法对于编写高效、可维护的代码至关重要。

标签:函数,指向,对象,JavaScript,关键字,name
From: https://www.cnblogs.com/yhy373286277/p/18338109

相关文章

  • super关键字
    uper在父类、子类相关联的操作中经常被用到super是Java中的关键字,用于引用父类(超类)的成员变量、方法或构造函数。它有以下主要用途:访问父类中的成员变量调用父类中的构造方法调用父类中的方法1、访问父类的成员变量使用super关键字可以在子类中访问父类中的成员变量......
  • 封装,private关键字,this关键字
    我们上一个案例,使用private关键字将成员进行修饰,外界无法直接访问,讲了那么长时间,实际上就是在传输一个思想面向对象编程的三大特征,第一大特征:封装封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。private关键字:1、被private修饰的成员,外......
  • static关键字
    static关键字static关键字是什么?static是一个修饰符,用于修饰类的成员方法、类的成员变量,static关键字还有一个比较关键的作用就是用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行......
  • this关键字
    当局部变量和成员变量重名时,在方法中使用this时,表示的是该方法所在类中的成员变量。(this指的是当前对象自己)如:publicclassWorld{Strings="World";publicWorld(Strings){System.out.println("s="+s);System.out.println("1-this.s="+this.s);......
  • super关键字
    super关键字目录super关键字两种途径语法格式常见用法访问父类的构造方法访问父类的成员变量访问父类的方法在多态上下文中使用在静态上下文中使用在匿名内部类中使用两种途径调用父类的方法调用父类的构造方法语法格式super.属性名//访问父类的属性super.方法名(参数);......
  • final关键字
    final关键字目录final关键字修饰类修饰方法修饰变量修饰成员变量修饰局部变量修饰基本数据类型修饰引用数据类型修饰类当final修饰类时,表示该类不可被继承。修饰方法当final修饰方法时,表示方法不可被子类覆盖,但是可以重载。修饰变量修饰成员变量如果final修饰的是类变量,......
  • await 调用的函数不一定必须是 async 函数。 await 关键字通常用于 async 函数内部,用
    await调用的函数不一定必须是async函数。 await关键字通常用于async函数内部,用来等待一个Promise对象的解决。但如果被await调用的对象不是Promise,那么它会被直接返回。 functionnotPromiseFunction(){return42;}asyncfunctionexample(){const......
  • 关键字和保留字
    目录关键字(Keyword)定义:特点:保留字(ReservedWord)特点:关键字(Keyword)定义:关键字是被Java语言赋予了特殊含义,用做专门用途的字符串(单词)。它们对Java的编译器有特殊的意义,用于表示一种数据类型或者表示程序的结构等。特点:关键字中的所有字母都是小写。关键字不能用作变量名、方......
  • 关键字和保留字
    1.1概念Java关键字(KeyWord):对Java的编译器有特殊的意义,他们用来表示一种数据类型或者表示程序的结构.保留字(ReserveWord):即它们在Java现有版本中没有特殊含义,以后版本可能会作为有特殊含义的词,或者该词虽然在Java中没有特殊含义,以后版本也不打算使用,但在其它语言中有特殊含义,......
  • 关键字和保留字
    关键字和保留字1.关键字(Keyword)关键字是被Java语言赋予了特殊含义,用做专门用途的字符串(单词)。它们是Java语法的一部分,用于表示特定的数据类型、程序结构等。特点:关键字中的所有字母都是小写。关键字不能用作变量名、方法名、类名等标识符。Java中的关键字:访问......