簡體   English   中英

如何覆蓋對象的默認輸出?

[英]How do I override the default output of an object?

用JavaScript說,我創建了一個簡單的對象:

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

現在,如果我創建了一個實例並將其輸出到控制台,則會看到對象表示形式:

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

我該如何使輸出字符串呢?:例如,我希望控制台顯示“ My property value is 'property'而不是[對象對象]。

我已經嘗試過使用MyObj.prototype.toString ,但是它似乎不起作用。

您可以掛鈎瀏覽器控制台,然后再重新定義它:

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);

MyObj.prototype.toString() = function() {}將起作用,但不會輸出到控制台。 如果你做的事情

console.log("The object says: " + obj);

...您將看到toString()的輸出

function MyObj() {
    this.prop = "property";
}
MyObj.prototype.toString = function() {
   return "My property 'prop' has the value: '" + this.prop + "'";
}
var obj = new MyObj();
console.log("the object says: " + obj);

// the object says: My property 'prop' has the value: 'property'

// Or call toString() explicitly
console.log(obj.toString());
// My property 'prop' has the value: 'property'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM