2016-05-17 5 views

答えて

4

内の最初の項目へ参照が含まれています。

JavaScriptを含むオブジェクト(配列を含む)は、参照のみでアクセスされます。 (すなわちfoo = []は配列を生成し、その配列への参照をfooに割り当てます)。

したがって、オブジェクトの参照である配列の最初の値のコピーを取得します。


これは、配列の最初の値への参照とは異なります。与えられ

referenceは、配列内の最初の値を参照した場合

var array = [ { value: 1 } ]; 
var reference = array[0]; 
array.unshift({ value: 2 }); 

、その後、最初の値を変更することによって、それがvalue : 2でオブジェクトを指し示すことになります。

値のコピーであるため、オブジェクトへの参照は引き続きvalue : 1(配列の2番目の値)になります。

0

例では、curheadは、配列のJavaScript値で常にコピーsnake

+0

私はなぜdownvoteを持っているのか知りたいです。 – Jamiec

+0

私も。ご協力いただきありがとうございます! – sam

0

これは、要素が1つのみのオブジェクトの配列です。したがって

this.snake[0] 

{x:0、y:0}への参照が含まれます。

パラス

-1

curHeadsnake[0]は正確に同じメモリ位置を指します。 curHeadで値を変更してみてください、それはあなたがcurheadに完全に新しいオブジェクトを割り当てるしようとすると、snake[0]同様

curhead.x = 1 
console.log(curhead) 
//Object {x: 1, y: 0} 
console.log(this.snake) 
//[{x: 1, y: 0}] 

楽しい事が起こる、curhead = 'hi'を言うことができます変更されます。次にjavaScriptはcurheadの新しいヒープスペースを作成し、this.snakeはその値に変更されません{x: 1, y: 0}

+0

"まったく同じメモリ位置に" - これは実装の詳細です。 – Quentin

+0

@sam回答が役に立った場合は、upv​​oteセクションの横にあるチェックマークをクリックして受け入れてください。 – sapy

関連する問題