如何处理';未定义';在Javascript中为对象设置方法时从控制台返回?

如何处理';未定义';在Javascript中为对象设置方法时从控制台返回?,javascript,undefined,Javascript,Undefined,我有一个名为Message的对象,它有一个名为.show()的内置方法,该方法以字符串作为输入。当我在Message类上调用.show()时,我的浏览器中的无序列表(classname=chat)中会出现一个带有字符串输入的项目符号列表项 在控制台中,Message.show('string')返回未定义的。为了练习,我删除了.show(),以便学习如何构建它 代码: Message.prototype.show=函数(文本){ $('.chat').append(''+text+''); }

我有一个名为Message的对象,它有一个名为.show()的内置方法,该方法以字符串作为输入。当我在Message类上调用.show()时,我的浏览器中的无序列表(classname=chat)中会出现一个带有字符串输入的项目符号列表项

在控制台中,Message.show('string')返回未定义的。为了练习,我删除了.show(),以便学习如何构建它

代码:

Message.prototype.show=函数(文本){
$('.chat').append('
  • '+text+'
  • '); }
    然而,我得到一个TypeError,说我不能设置未定义的属性'show'。我知道它需要一个函数作为回报,但这是否意味着我不能给消息类一个它曾经拥有的方法?我在使用原型或附加列表项时是否有语法错误?有更好的方法吗


    我被卡住了。。感谢您的帮助。非常感谢你

    在添加
    .show()
    方法之前,需要定义
    函数Message()

    如果我没弄错的话,你要找的是:

     // Define the function
     function Message() {
    
     }
    
     // Add prototype methods
     Message.prototype.show = function (text) {           
         $('.chat').append('<li>' + text + '</li>');
     }
    
     // Usage:
     var msg = new Message();
     msg.show("Hello there.");
    
    //定义函数
    函数消息(){
    }
    //添加原型方法
    Message.prototype.show=函数(文本){
    $('.chat').append('
  • '+text+'
  • '); } //用法: var msg=新消息(); msg.show(“你好”);
    您甚至可以像这样添加一些额外的(未测试):

    函数消息(){
    this.chatWindow=$(“.chat”);
    }
    Message.prototype.render=函数(文本){
    返回$('
  • '+text+'
  • '); } Message.prototype.show=函数(文本){ this.chatWindow.append(this.render(text)); } //用法: var msg=新消息(); msg.show(“你好”);
    您必须使用
    消息初始化某些内容,并且不能直接访问其方法

    例如:

    var message = new Message();
    message.show('test');
    

    我不确定我是否理解。。。但是当然
    Message.show('string')
    返回未定义的。该函数中没有返回语句。您在何处(以及如何)定义消息?@Steve:
    消息
    (函数?)对象上没有
    show
    属性为什么是
    Message.prototype必要吗?@joeframbach抓得好,不是。我会把它移走的,这个可以。非常感谢你!
    
     function Message() {
          this.chatWindow = $(".chat");
     }
    
     Message.prototype.render = function (text) {
          return $('<li>' + text + '</li>');
     }
    
     Message.prototype.show = function (text) {           
         this.chatWindow.append(this.render(text));
     }
    
     // Usage:
     var msg = new Message();
     msg.show("Hello there.");
    
    var message = new Message();
    message.show('test');