2

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

在控制台中, Message.show('string') 返回undefined。为了练习,我删除了 .show() 以便我可以学习构建它。

代码:

 Message.prototype.show = function (text) {           
     $('.chat').append('<li>' + text + '</li>');
 }

但是,我收到一个TypeError 说我无法设置未定义的属性“显示”。我知道它期待一个函数作为回报,但这是否意味着我不能给 Message 类一个它曾经拥有的方法?在使用原型或附加列表项时是否有语法错误?有没有更好的方法来做到这一点?

我被卡住了..任何帮助表示赞赏。非常感谢!

4

2 回答 2

4

您需要先定义function Message(),然后才能向其添加.show()方法。

如果我没记错的话,你要找的是这个:

 // 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.");

您甚至可以像这样添加一些额外的内容(未经测试):

 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.");
于 2013-03-21T16:44:19.267 回答
2

你必须初始化一些东西,Message并且不能直接访问它的方法。

例如:

var message = new Message();
message.show('test');
于 2013-03-21T16:44:29.977 回答