我不知道为什么函数不使用我的变量

i dont know why the functions aren´t using my variable

我创建了一个包含字符串的变量,然后将该变量放入两个不同的函数中。这里的问题是它向我显示了一个错误:“Uncaught ReferenceError: mostrarDatosTexto is not defined”。我不太确定为什么会这样。这是代码:

const Libro = (titulo, autor) => {return(

    {
        autor: autor, 
        titulo: titulo,
        mostrarDatosTexto: `${titulo}, de ${autor.toUpperCase()}`,
        mostrarDatosEnConsola:  () => {return (console.log(mostrarDatosTexto))},
        mostrarDatosEnAlert:    () => {return (alert(mostrarDatosTexto))},
    }

)}


let unLibro = Libro('Ángeles y Demonios', 'Dan Brown')

console.log(unLibro)

unLibro.mostrarDatosEnConsola()
unLibro.mostrarDatosEnAlert()

如果你能帮助我,我将不胜感激

mostrarDatosTexto 是一个 属性,不是变量。您需要使用 XXX.mostrarDatosTexto 语法访问它。

在对象方法中,您可以使用this 来引用调用该方法的对象。但是你必须使用普通函数,而不是箭头函数,因为箭头函数从定义它们的范围中保留 this 的值,它们不会将其作为方法调用联系人接收。

console.log()alert() 没有 return 任何东西,所以使用 return 到 return 它们的值是没有意义的。不使用 return.

直接调用它们

const Libro = (titulo, autor) => {
  return (
    {
      autor: autor,
      titulo: titulo,
      mostrarDatosTexto: `${titulo}, de ${autor.toUpperCase()}`,
      mostrarDatosEnConsola: function() {
        console.log(this.mostrarDatosTexto);
      },
      mostrarDatosEnAlert: function() {
        alert(this.mostrarDatosTexto);
      },
    }
  )
}


let unLibro = Libro('Ángeles y Demonios', 'Dan Brown')

console.log(unLibro)

unLibro.mostrarDatosEnConsola()
unLibro.mostrarDatosEnAlert()