3

ここにいくつかのJSコードがあります:

function Car(manufacturer, model, year) {
    this.manufacturer = manufacturer;
    this.model = model;
    this.year = year == undefined ? new Date().getFullYear() : year;
    this.getInfo = function(){
        return this.manufacturer +' '+ this.model +' '+ this.year;
    };
}

var bmw = new Car("BMW", "X5", 2010);

したがって、コンソールに興味深い出力が必要です。

console.log('Car: ' + bmw); // Car: BMW X5 2010

メソッドを呼び出さずにそれを行う方法は?

ありがとう!

I need the 'getInfo' method, so I have simply changed my code:
function Car(manufacturer, model, year) {
    this.manufacturer = manufacturer;
    this.model = model;
    this.year = year == undefined ? new Date().getFullYear() : year;
    this.toString = this.getInfo = function(){
        return this.manufacturer +' '+ this.model +' '+ this.year;
    };
}
4

3 に答える 3

1

console.logパラメータとして与えられたものをコンソールに出力するだけです。あなたの場合、(文字列をオブジェクトと連結することによって) 文字列を与えています。

簡単にconsole.log(bmw)言うと、興味深い結果が表示されます。使用している Web インスペクターによっては、 のすべてのプロパティをクリックすることができbmwます... とてもいいです。

console.log(bmw)Chrome デベロッパー ツールでの表現:

ここに画像の説明を入力

正確な質問に答えるために、関数をオーバーライドしてオブジェクトの文字列表現を変更できますtoString()

function Car(manufacturer, model, year) {
    this.manufacturer = manufacturer;
    this.model = model;
    this.year = year == undefined ? new Date().getFullYear() : year;
    this.getInfo = function(){
        return this.manufacturer +' '+ this.model +' '+ this.year;
    };

    // Build the string up as you wish it to be represented.
    this.toString = function() {
        var str = this.manufacturer + " " + this.model + " " + this.year;
        return str;
    };
}

var bmw = new Car("BMW", "X5", 2010);
console.log('Car: ' + bmw); // Car: BMW X5 2010
于 2012-08-23T11:23:18.460 に答える
0

メソッドをオーバーライドできますtoString:

Car.prototype.toString = function() {
    return this.model + ' ' + this.year;
};

このメソッドは、オブジェクトの文字列表現が必要な場合 (たとえば、"somestring" + yourObject.

リファレンス : https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/toString

于 2012-08-23T11:20:09.383 に答える
0

オブジェクトのtoString()メソッドをオーバーライドできます。

function Car(manufacturer, model, year) {
    this.manufacturer = manufacturer;
    this.model = model;
    this.year = year == undefined ? new Date().getFullYear() : year;
    this.toString = function() {
        return this.manufacturer + ' ' + this.model + ' ' + this.year;
    };
}

この fiddleで結果をテストできます。

于 2012-08-23T11:20:33.150 に答える