我想了解以下Javascript代码以了解JS如何确定下面代码中的this值[重复]

问题描述 投票:0回答:2

修订后的问题:我在网上看到了这个代码示例,当我执行它时,控制台上没有记录任何内容。我希望它会记录“用户名”,但它没有。我想知道为什么会发生这种情况。为什么“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);

javascript object scope this
2个回答
1
投票
Javascript 中的

this
关键字取决于定义它的上下文。这是一篇文章解释
this
关键字

在您的示例中,如果您需要获取

createUser
函数返回的对象的引用,请将
userRef
更改为函数,如下所示

function createUser() {
   return {
      name: "User Name",
      userRef: function() {
        return this;
      },
   };
}


1
投票

为了使用

this
,您必须将
useRef()
视为函数。

function createUser() {
  return {
    name: "User Name",
    useRef(){
      return this;
    },
  };
}

let user = createUser();
   
console.log(user.useRef().name);

© www.soinside.com 2019 - 2024. All rights reserved.