0

私は次のようなオブジェクトを持っています

 var vehicle = {
     car:function()
     {
         console.log("Vroom");
     },
     bus:function()
     {
         console.log("Grrr");
     }
 };

オブジェクト車両のプロトタイプを作成して、さらに機能を追加するにはどうすればよいですか? 「自転車」と呼ばれるもう1つの機能があるように?

4

3 に答える 3

1

「私はこのようなオブジェクトを持っています」と言うとき、オブジェクト リテラルを使用して、この正確な方法でそのオブジェクトを作成することを意味しますか、それともオブジェクト リテラルを使用してオブジェクトがどのように見えるかを説明するだけですか?

最初のケースでは、RGraham または SrikanthManian のソリューションをそのまま使用できます。

2 番目のケースでは、作成方法が正確にわからないオブジェクト (つまり、サード パーティのライブラリからのもの) があると仮定すると、実際にはそのコンストラクタ関数のプロトタイプを操作して、新しい関数を使用できるようにすることができます。すべてのvehicleインスタンス:

vehicle.constructor.prototype.bike = function () {
    console.log("bike");
};

このアプローチの唯一の問題は、 をvehicle.constructor指している場合、オブジェクトObjectだけでなく、すべてのオブジェクトがこの関数を継承することvehicleです。したがって、より安全な方法は次のとおりです。

if (vehicle.constructor !== Object) {
    vehicle.constructor.prototype.bike = function () {
        console.log("bike");
    };
}
于 2013-10-08T08:04:58.217 に答える