Как переопределить вывод объекта по умолчанию? - PullRequest
2 голосов
/ 30 марта 2012

Скажем, в JavaScript я создаю простой объект:

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

Теперь, если я создаю экземпляр этого и выводю его на консоль, я вижу представление объекта:

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

Как я могу вместо этого сделать вывод в виде строки ?: Например, я хотел бы, чтобы консоль отображала My property value is 'property', а не [объектный объект].

Я пытался использовать MyObj.prototype.toString, но это не 'кажется, не работает.

Ответы [ 2 ]

5 голосов
/ 30 марта 2012

Вы можете подключить консоль браузера и переопределить ее впоследствии:

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);
2 голосов
/ 30 марта 2012

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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...