Javascript 节点用户模型获取类型错误:无法设置属性';getUserId';未定义的

Javascript 节点用户模型获取类型错误:无法设置属性';getUserId';未定义的,javascript,node.js,Javascript,Node.js,我正在尝试创建一个用户模型,但我得到了: 2018-12-18 09:47:07.567[错误]:未捕获异常:无法设置 未定义类型的属性“getUserId”错误:无法设置属性 未定义的“getUserId” 模型如下: var User = (userId, name, lastname) => { this.userId = userId; this.name = name; this.lastname = lastname; this.tokenize

我正在尝试创建一个用户模型,但我得到了:

2018-12-18 09:47:07.567[错误]:未捕获异常:无法设置 未定义类型的属性“getUserId”错误:无法设置属性 未定义的“getUserId”

模型如下:

var User = (userId, name, lastname) => {
    this.userId = userId;
    this.name = name;
    this.lastname = lastname;
    this.tokenizeSingle = null;
    this.tokenizeFile = null;
    this.detokenizeSingle = null;
    this.detokenizeFile = null;
}

User.prototype.getUserId = () => {
    return this.userId;
}

User.prototype.getName = () => {
    return this.name;
}

User.prototype.getLastname = () => {
    return this.name;
}

User.prototype.getFullName = () => {
    return this.name + ' ' + this.lastname;
}

User.prototype.getTokenizeSingle = () => {
    return this.tokenizeSingle;
}

User.prototype.getTokenizeFile = () => {
    return this.tokenizeFile;
}

User.prototype.getDetokenizeSingle = () => {
    return this.detokenizeSingle;
}

User.prototype.getDetokenizeFile = () => {
    return this.detokenizeFile;
}

User.prototype.setPermissions = (tokenizeSingle, tokenizeFile, detokenizeSingle, detokenizeFile) => {
    this.tokenizeSingle = tokenizeSingle || null;
    this.tokenizeFile = tokenizeFile || null;
    this.detokenizeSingle = detokenizeSingle || null;
    this.detokenizeFile = detokenizeFile || null;
}

module.exports = User;
我也在使用VS代码,当我使用VS代码时,它并没有提出任何建议:var newUser=newUser(1,'Rand','Fisk')
newUser
中添加点不会显示原型中设置的任何选项


我遗漏了什么?

箭头函数没有自己的
上下文。更改为常规功能,它应该可以工作:

function User(userId, name, lastname) {
    this.userId = userId;
    this.name = name;
    this.lastname = lastname;
    this.tokenizeSingle = null;
    this.tokenizeFile = null;
    this.detokenizeSingle = null;
    this.detokenizeFile = null;
}

User.prototype.getUserId = function() {
    return this.userId;
}

是否应将所有原型设置也更改为常规功能?是。如果不这样做,
将等于外部范围中的
,例如
窗口
。这就是箭头函数的工作原理。@FedeE。很高兴我能帮忙:)