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.responseData在调试过程中出现undefined,原因是两个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所指代的并不相同,使用前必须注意其所指代的内容。
上一篇: autograd自动求导-Pytorch
下一篇: wsl使用vscode调试cpp