我有一个JavaScript类Data
,在其中尝试获取对象的字符串表示形式:
function Data(t, s, m) {
this.time = t;
this.sender = s;
this.message = m;
var stringRep = function() {
return ("time:" + this.time + " sender:" + this.sender + " message:" + this.message)
};
console.log(this.stringRep); //returns undefined
var typeRep = (jQuery.type(1234));
console.log(this.typeRep); //returns undefined
Data.prototype.toString = function DataToString() {
var ret = "time:" + this.time + " sender:" + this.sender + " message:"
+ this.message;
return ret;
}
console.log(this.toString()); //returns correct toString representation
}
首先,我尝试使用给出
stringRep
的undefined
。然后我什至试图得到简单编号的类型。使用typeRep
并返回undefined
的1234。最后,我从MDN获得帮助以正确覆盖toString
方法。以前的方法有什么问题?
最佳答案
您犯了两个错误:
您将stringRep
定义为私有变量,并尝试调用它
通过执行this.stringRep
。您需要将其定义为
通过执行this.stringRep = function(){ //...}
的数据实例stringRep
是一个函数,您需要执行this.stringRep()
执行它。
顺便说一句,您应该避免覆盖toString()
方法。
编辑:更具体地说:就个人而言,我认为这可能会使开发人员感到困惑,因为他们可能会认为他们使用的是本机JavaScript方法,但是如果您不这样认为,那就没有问题。