修订后的问题:我在网上看到了这个代码示例,当我执行它时,控制台上没有记录任何内容。我希望它会记录“用户名”,但它没有。我想知道为什么会发生这种情况。为什么“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);
this
关键字取决于定义它的上下文。这是一篇文章解释this
关键字
在您的示例中,如果您需要获取
createUser
函数返回的对象的引用,请将 userRef
更改为函数,如下所示
function createUser() {
return {
name: "User Name",
userRef: function() {
return this;
},
};
}
为了使用
this
,您必须将 useRef()
视为函数。
function createUser() {
return {
name: "User Name",
useRef(){
return this;
},
};
}
let user = createUser();
console.log(user.useRef().name);