1

私は 2 つの異なる方法でオブジェクトを作成し、それらに到達して操作しようとします。オブジェクトコンストラクターで作成したオブジェクトは機能しますが、リテラル表記でやろうとしているのと同じことが機能しません。理解できない。

これは、私よりも自分自身をよりよく説明するコードです:

var numberOne = new Object();
rand = Math.random();
numberOne[rand] = "random number";
console.log(numberOne); //return 0.6761925128922479: "random number"



var numberTwo = {}; //code doesnt work.
numberTwo.rando = Math.random();
numberTwo[rando] = "another random number";

console.log(numberTwo); //error
4

5 に答える 5

0

インデックスの乱数が乱数変数ではなく numberTwo オブジェクトに保存されるため、機能しません。次のように、numberTwo オブジェクトに保存されたインデックスを参照する必要があります。

 numberTwo[numberTwo.rando];

したがって、コードは次のようにする必要があります。

var numberTwo = {}; 
numberTwo.rando = Math.random(); // numberTwo.rando contains some random number
numberTwo[numberTwo.rando] = "another random number"; //now it is correct
于 2015-02-03T16:36:33.910 に答える
0

これがあなたが望むものだと思います:

var numberOne = new Object();
var rand = Math.random();
numberOne[rand] = "random number";
console.log(numberOne);

var numberTwo = {};
rand = Math.random();
numberTwo[rand] = "another random number";

console.log(numberTwo);

存在しないnumberTwo[rando] = "another random number";ため、コードが壊れます。rando

于 2015-02-03T16:38:39.673 に答える
0

これらの 2 つは等価ではありません。

最初のものでは、名前が乱数であるプロパティを作成し、そのプロパティに文字列を値として割り当てます。

rand = Math.random();
numberOne[rand] = "random number";

あなたのテストはこれを示しています://return 0.6761925128922479: "random number"

2 つ目では、「rando」というプロパティを作成し、それに乱数である値を割り当てます。rando次に、(文字列)の代わりに (存在しない変数)"rando"を使用して、以前に作成したプロパティにアクセスしようとしているため、存在しないプロパティに文字列値を割り当てようとします。

numberTwo.rando = Math.random();
numberTwo[rando] = "another random number";

両方に同じアプローチを使用した場合、両方とも機能します。このような:

var numberOne = new Object();
rand = Math.random();
numberOne[rand] = "random number";
console.log(numberOne);

var numberTwo = {};
rando = Math.random(); // <---- The different line
numberTwo[rando] = "another random number";
console.log(numberTwo);
于 2015-02-03T16:39:31.577 に答える