1

助けていただければ幸いです。次のことを行う小さなjavascriptプログラムを実行しようとしています:

1)私はすでに、さまざまな車に関する情報を含むいくつかの配列を持っています。例えば:

var brand = ["Audi", "Ford", "Peugeot", "Nissan"];
var color = ["red", "black", "black", "white"];

2) 次に、新しい車を作成し、配列に保存したものからプロパティを取得するメソッドを介してプロパティを受け取るクラスを作成したいと思います。

このようなものは正しいですか?

function newcar() {
    this.prototype.loadinfo = function() {
        var cbrand = brand[0];
        var ccolor = color[0];
    }
}

これがひどく間違っている場合は申し訳ありませんが、私が尋ねている理由は、私がチェックしたウェブページにこの特定のケースに関する情報が見つからなかったためです. 私はインターネットのチュートリアルだけで JavaScript を学ぼうとしているので、できる限り解決策を推測しようとしました!

そして、それが正しい (一種の) 場合、または正しいバージョンが非常に似ている場合、新しい車を作成するときに配列をどのように進めればよいかわかりません。たとえば、1 回実行すると、作成された最初の車は位置 [0] の情報を受け取りますが、2 回以上実行すると、配列のどの位置で情報?

私はこの主題についてかなり混乱しています。誰かが私にアドバイスを与えることができれば、私は非常に感謝します. その間、私はそれについて読み続け、何か他のことを見つけられるかどうかを確認します.

ありがとう!

4

1 に答える 1

1

私の理解が正しければ、配列内のブランドと同じ数の新しい車のオブジェクトを作成する必要があります。まず、コンストラクターを修正します。コンストラクターは慣習として大文字で表記され、プロトタイプは外部で宣言する必要がありますが、共有メソッドではなく一意のプロパティを扱っているため、プロトタイプは必要ないことに注意してください。次に、プロパティに割り当てられる 2 つのパラメーターを渡すことができます。言い換えると:

function Car( brand, color ) {
  this.brand = brand;
  this.color = color;
}

これらのプロパティを読み取るメソッドが必要な場合は、次のようにプロトタイプに追加します。

Car.prototype = {
  loadInfo: function() {
    alert( this.brand +':'+ this.color );
  }
};

最後に、配列内のすべての項目に対して新しい車を作成するには、次のようにします。

var cars = [];
for ( var i = 0; i < brand.length; i++ ) {
  cars.push( new Car( brand[i], color[i] ) );
}

これで、配列に 4 台の車carsがあり、各車は異なるブランドと色になります。

さらに良いことに、ブランドと色をオブジェクトと で整理して、for...in新しい車を作成できます。

var cars = {
  Audi: 'red',
  Ford: 'black',
  Peugeot: 'black',
  Nissan: 'white'
};

var mycars = [];
for ( var c in cars ) {
  mycars.push( new Car( c, cars[c] ) );
}
于 2012-11-03T21:29:42.913 に答える