javascript - 如何调用方法 myFunction 来返回(名称) 我已经尝试了很多方法,但它不起作用

标签 javascript

下面是我正在谈论的内容

class User {
    constructor(name) {
        this.name = name;
    }

    myFunction() {
        return function() {
            return this.name;
        }
    }
}
let kk = new User("kk");
let speak = kk.myFunction();
speak();

我收到此错误:

Uncaught TypeError: Cannot read property 'name' of undefined

最佳答案

您应该使用 this.name 来代替,并且该函数不应返回函数

 class User {
   constructor(name) {
     this.name = name;
   }
   myFunction() {
     alert(this.name);
     return this.name;
   }
}
let user = new User("jj").myFunction();

console.log(user)

编辑: 您现在编辑的问题与您发布的原始问题不同。这需要一个柯里化(Currying)解决方案:

class User {

  constructor(name) {
    this.name = name;
  }
  myFunction() {
    let name = this.name;
    return function() {
      return name;
    }
  }
}
let kk = new User("kk");
let speak = kk.myFunction();
console.log(speak());

关于javascript - 如何调用方法 myFunction 来返回(名称) 我已经尝试了很多方法,但它不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59688572/

相关文章:

javascript - jQuery 识别来自用户的点击,而不是触发

javascript - 使用 PHP/Javascript 测试网络速度

javascript - 在 NgRx 应用程序中对对象使用 Array.reduce 函数

javascript - d3.csv 将列值映射为对象中的键

javascript - Simple WebApp - 通过 HTML/AWS Javascript SDK 将文件上传到 S3

javascript - 如何在 Dynamics CRM 中使用 openForm 设置多选字段值?

javascript - AJAX 'success' 在 IE 中 AJAX 执行之前调用

javascript - 根据每个选项的值或 ID 过滤选择框

javascript - 重复的 AJAX 请求使浏览器变慢

javascript - 网页无法在 Android 应用内浏览器上正确加载