javascript - 获取对象的字符串表示的不同方法

标签 javascript

我有一个 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。然后我什至尝试获取简单的“否”类型。攀上漂亮女局长之后1234最后我得到了MDN的帮助正确重写toString方法。

以前的方法出了什么问题?

最佳答案

您正在处理范围界定问题。首先,您的 stringRep 函数并未定义为 Data 的属性,而只是定义为变量。你想做的是这样的:

function Data(t, s, m) {
    this.stringRep = function() {
        // Your definition goes here
    };

    // Now you can call it like so
    console.log(this.stringRep());
};

至于您的 toString,您正确地覆盖了它,但如果您在构造函数中执行此操作,则每次生成新的 Data 实例时都会重新创建它。相反,试试这个:

function Data(t, s, m) {
    // All of your code except for toString
};

Data.prototype.toString = function() {
    var ret = "time:" + this.time + " sender:" + this.sender + " message:"
            + this.message;
    return ret;
};

关于javascript - 获取对象的字符串表示的不同方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25205748/

相关文章:

javascript - react 语法错误: Unexpected Token at =

javascript - PHP Javascript 无法访问 PHP 模式之外的回显元素

javascript - 扩展 JSS 样式类而不是覆盖它

javascript - 图像阵列和方向键

javascript - 在循环内用新对象填充数组

javascript - jQuery 获取未填充的空文本框的数量

javascript - 本地 Javascript 中的 SQLite 数据库

javascript - 使用状态实时渲染通用 HTML 代码

javascript - 为 AngularJS 应用加载本地化内容

javascript - BigQuery 中的自定义排序功能