2017-10-07 129 views
0

的愈来愈未捕获的参考错误:“消息”没有被定义, 这里是代码:未捕获的ReferenceError:X是未定义

class ChatApp { 
    constructor(){ 
    //console.log('ChatApp constructor'); 
    socket.init('ws://localhost:8000'); 
    socket.registerOpenHandler(() => { 
     let message = new ChatMessage({ message: 'Hello' }); 
     socket.sendMessage(message.serialize()); 
    }); 
    socket.registerMessageHandler((data) => { 
     console.log(data); 
    }); 
    } 
} 

class ChatMessage { 
    constructor({ 
    message: m, 
    user: u='Nader', 
    timestamp: t=(new Date()).getTime() 
    }) { 
    this.message = message; 
    this.user = user; 
    this.timestamp = timestamp; 
    console.log(message); 
    } 
    serialize(){ 
    return { 
     message: this.message, 
     user: this.user, 
     timestamp: this.timestamp 

    }; 
    } 
} 

虽然我使用让消息行5定义的消息.... 请帮忙,谢谢

+1

你一定要明白你解构过程中重命名?它不是'消息'。 – Li357

+0

“user”和“timestamp”相同。 –

+0

@Andrew李你是正确的 – Ned007

回答

0

您正在使用错误的变量名,用什么你通过构造函数中,

this.message = m; 
this.user = u; 
this.timestamp = t; 
console.log(message); 
+0

感谢Sajeetharan, 错误,现在发生在第19行: 消息:男, (遗漏的类型错误:无法读取的未定义的属性“消息”), – Ned007

+0

谢谢,你是对的它现在工作! – Ned007

+0

@ Ned007标记为答案,如果它帮助 – Sajeetharan

0

如果我的理解它正确地说,你的构造函数设置你的类值等于类型而不是传入的值。

+0

请参阅我指的是@Sajeetharan。 –

+0

感谢它的工作 – Ned007

0

问题出在您的ChatMessage构造函数上。键被重命名为单个字符,但它们不在构造函数的主体中使用。

应该是:

constructor({ 
    message: m, 
    user: u='Nader', 
    timestamp: t=(new Date()).getTime() 
    }) { 
    this.message = m; 
    this.user = u; 
    this.timestamp = t; 
    } 
+0

你是绝对正确的,我这样做,它的工作 – Ned007

相关问题