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