提问人:Asad Gulzar 提问时间:6/16/2023 最后编辑:Asad Gulzar 更新时间:9/18/2023 访问量:55
我想了解以下 Javascript 代码,以了解 JS 如何在以下代码中确定此值 [重复]
I want to understand following Javascript code to know how JS determine value of this in below code [duplicate]
问:
修改后的问题:我在网上遇到了这个代码示例,当我执行它时,控制台上没有记录任何内容。我希望它会记录“用户名”,但它没有。我想知道为什么会这样。为什么“this”不指向新创建的对象?JavaScript 如何确定“this”的引用?如果我将普通函数更改为箭头函数,会发生什么情况,如果我在函数中包含完整条件,会发生什么情况?
function createObj() {
// create an object and return from function
return {
name: "User Name",
reference: this,
};
}
// newly created object assigned to a user variable
var user = createUser();
console.info(user.reference.name);
答:
1赞
Bharat
6/16/2023
#1
this
Javascript 中的关键字取决于定义它的上下文。这是一篇解释关键字的文章this
在您的示例中,如果需要获取函数返回的对象的引用,请更改为函数,如下所示createUser
userRef
function createUser() {
return {
name: "User Name",
userRef: function() {
return this;
},
};
}
0赞
udoyhasan
6/16/2023
#2
为了使用,您必须将其视为函数。this
useRef()
function createUser() {
return {
name: "User Name",
useRef(){
return this;
},
};
}
let user = createUser();
console.log(user.useRef().name);
评论
this
是对示例中 window 对象的引用。console.log( user.name );
"User Name"