欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

this使用注意须知

程序员文章站 2024-03-14 09:35:04
...

this使用注意须知

this关键字

代表本类对象的引用==>根据类创建的对象
哪个对象调用的方法,方法中的this就是哪个对象

package com.shiyitiancheng.bean;

public class News {
    private Integer id;     //主键id
    private String title;   //新闻标题

    public News() {
    }

    public News(Integer id, String title) {
    /*
    this关键字:
        代表本类对象的引用==>根据类创建的对象
        哪个对象调用的方法,方法中的this就是哪个对象

    this关键字作用:当局部变量和成员变量重名时,使用this关键字可以区*部变量和成员变量
        this.变量名==>成员变量
 */
        this.id = id;
        this.title = title;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    @Override
    public String toString() {
        return "News{" +
                "id=" + id +
                ", title='" + title + '\'' +
                '}';
    }
}

this是有作用范围的,使用时必须注意其指代

以我javascript语言中的一段代码为例

let search = new Vue({
        el:"#search",
        data:{
            username:"",
            responseData:[]
        },
        methods:{
            search(){
                axios.get('/userServlet?username='+this.username)
                    .then(function (response) {

                        this.responseData = response.data;

                    })
                    .catch(function (error) {
                        console.log(error);
                    });

            },
            show(){
                return this.username==null?'show':''
            }
        }
    })

出现的状况
this使用注意须知

前端代码未出错,但是this.responseData在调试过程中出现undefined,原因是两个this指代不同。

this使用注意须知
解决方法

<script src="js/vue.js"></script>
<script src="js/axios.js"></script>
<script>

    let search = new Vue({
        el:"#search",
        data:{
            username:"",
            responseData:[]
        },
        methods:{
            search(){
                let _this = this;
                axios.get('/userServlet?username='+this.username)
                    .then(function (response) {

                        _this.responseData = response.data;
                       
                    })
                    .catch(function (error) {
                        console.log(error);
                    });

            },
            show(){
                return this.username==null?'show':''
            }
        }
    })


</script>

注意

在不同对象中this所指代的并不相同,使用前必须注意其所指代的内容。