语法错误:意外的令牌

时间:2019-06-14 10:31:47

标签: node.js

我在Google上搜索了类似的问题,但没有帮助。

// file export_object.js

function Welcome(nameIn) {
    this.name = nameIn;
}

Welcome.prototype = {
    this.name = null,
    showName: function () {
        console.log("Hi exported object from contructor function " + name);
    },
    updateName: function(nameIn) {
        this.name = nameIn;
    }
};

module.exports = Welcome;

问题就在线上

  

this.name = null,

// file server.js

var Welcome = require('export_object');
var w = new Welcome("Please update string");
w.updateName('Exported name:');
w.showName();

SyntaxError:意外令牌。

2 个答案:

答案 0 :(得分:1)

已经在构造函数中分配了名称,因此在原型中明确定义空属性没有意义。只需删除该行:

function Welcome(nameIn) {
    this.name = nameIn;
}

Welcome.prototype = {
    showName: function () {
        console.log("Hi exported object from contructor function " + name);
    },
    updateName: function(nameIn) {
        this.name = nameIn;
    }
};

module.exports = Welcome;

如果必须在原型上放置名称属性,则定义键值对的正确方法是用冒号将它们分开,例如

{
  name: null,

哪种语法合适,但在大多数情况下仍然很奇怪。

答案 1 :(得分:0)

因为这里Welcome.prototype是一个对象

因此,对象始终定义为{“ key”:“ value”},因此语法错误

function Welcome(nameIn) {
    this.name = nameIn;
}

Welcome.prototype = {
    resetName: function(){ this.name = null},
    showName: function () {
        console.log("Hi exported object from contructor function " + name);
    },
    updateName: function(nameIn) {
        this.name = nameIn;
    }
};

module.exports = Welcome;