如何覆盖对象的默认输出? [英] How do I override the default output of an object?

查看:145
本文介绍了如何覆盖对象的默认输出?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在JavaScript中说我创建了一个简单的对象:

Say in JavaScript I create a simple object:

function MyObj() {
    this.prop = "property";
}

现在,如果我创建一个这样的实例并将其输出到控制台,我看到对象表示:

Now if I create an instance of this and the output it to console I see the object representation:

var obj = new MyObj();
console.log(obj);

我怎样才能使输出成为字符串?:例如,我希望控制台显示我的属性值是'property'而不是[object object]。

How can I instead make that output a string?: For example, I would like that the console displays My property value is 'property' rather than [object object].

我尝试过使用 MyObj.prototype.toString ,但它似乎不起作用。

I've tried using MyObj.prototype.toString, but it doesn't seem to work.

推荐答案

您可以挂钩浏览器控制台,然后重新定义它:

You could hook the browser console, and redefine it afterwards:

var obj = {
    name: "Joel",
    age: 32,
    toString: function() {
        return this.name + " is " + this.age + " years old.";
    }
};

var browserConsole = console;

console = {
    log: function(data) {
        if (typeof data === "object") {
            browserConsole.log(data.toString());
        } else {
            browserConsole.log(data);
        }
    }
}

console.log(obj);

这篇关于如何覆盖对象的默认输出?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆