javascript - 调整自定义对象的 console.log 行为

标签 javascript node.js

有什么方法可以影响 console.log 发出自定义对象的内容吗? 我试图覆盖 customObject.prototype.toString 方法,但它不起作用。

有什么想法吗?

最佳答案

在 node.js 中,console.log电话 util.inspect在没有格式化占位符的每个参数上。因此,如果您在对象上定义 inspect(depth, opts) 方法,它将被调用以获取对象的自定义字符串表示。

例如:

function Custom(foo) {
    this.foo = foo;
}

Custom.prototype.inspect = function(depth, opts) {
    return 'foo = ' + this.foo.toUpperCase();
};

var custom = new Custom('bar');
console.log(custom);

输出:

foo = BAR

或者使用类:

class Custom {
    constructor(foo) {
        this.foo = foo;
    }

    inspect(depth, opts) {
        return 'foo = ' + this.foo.toUpperCase();
    }
}

var custom = new Custom('bar');
console.log(custom);

关于javascript - 调整自定义对象的 console.log 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28397861/

相关文章:

javascript - 解析 kml 文件以在谷歌地球中显示多个地标

javascript - 动态改变输入值

javascript - String.prototype.trim.call(text) 和 text.trim() 的区别

JavaScript 返回值 : What does <> mean?

javascript - jQuery 自动完成选择功能未触发

javascript - Angular:如何在运行 Git 推送时强制运行单元测试?

node.js - firebase deploy --only 托管给出错误 : HTTP Error: 410, 未知错误

node.js - 护照-facebook中的callbackUrl和函数之间的区别

node.js - 使用jsdom获取DOM元素的实际宽度

node.js - Mongoose find().or 挂起