それはすべて値によるものです.Cプログラミングを理解していれば、ポインターの概念に精通しているでしょう.
ポインターはメモリ内の何かを指していると考えてください。すべての変数名 "bob from (bob = new person();)" は、基本的に操作するポインターです。
さて、関数を宣言するとき、それらはすべて値渡しであるため
function Test(a:Object, b:Object):void {
a = b;
}
「a」と「b」の両方が新しいポインターであると考えることができるため、「Test」関数内でのみ「a」と「b」の両方が存在し、メモリ内の何かを指します。
それでは使ってみましょう
var s1:Sprite = null;
var s2:Sprite = new Sprite;
Test(s1,s2);
したがって、s1 および s2 ポインタは、「スコープ」内で s1 および s2 として変更されない限り、常に「null」および「メモリ内の新しいスプライト」をそれぞれ指します <- 取り組む前に、変数のスコープを理解していることを確認してくださいこれ。
関数内には、「null」を指す「a」と「s2 と同じメモリ内のスプライト」を指す「b」という 2 つの新しいポインターがあります。オブジェクトと配列は基本的にポインターのコレクションであり、「a」と「b」を使用するために関数によって作成された新しいポインターは2つだけなので、「a」または「b」のプロパティ/公開変数「メモリ内のデータへのポインター」 "s1" および "s2" のものとまったく同じであり、まったく同じポインターです。
そのため、関数内で "a" が "b" に設定されると、実際には "a" ポインターが "b" と同じものを指しているだけです。ただし、「s1」と「s2」は、以前に指していたものを指しています。
!!!! これが参照によるものである場合、「a」と「b」を新しいポインターと考えることができず、「a」と「b」として書き出さない限り、実際には「s1」と「s2」自体になります。 .