我有一个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
}


首先,我尝试使用给出stringRepundefined。然后我什至试图得到简单编号的类型。使用typeRep并返回undefined的1234。最后,我从MDN获得帮助以正确覆盖toString方法。

以前的方法有什么问题?

最佳答案

您犯了两个错误:


您将stringRep定义为私有变量,并尝试调用它
通过执行this.stringRep。您需要将其定义为
通过执行this.stringRep = function(){ //...}的数据实例
stringRep是一个函数,您需要执行this.stringRep()
执行它。


顺便说一句,您应该避免覆盖toString()方法。

编辑:更具体地说:就个人而言,我认为这可能会使开发人员感到困惑,因为他们可能会认为他们使用的是本机JavaScript方法,但是如果您不这样认为,那就没有问题。

10-04 15:25