ActionScript的Array和Vector類都有一個slice()方法。如果您未傳遞任何參數,則新的Array或Vector是原始Vector的重複(淺層克隆)。.slice()是一個「淺層克隆」是什麼意思?
成爲「淺層克隆」意味着什麼?具體來說,就是
Array newArray = oldArray.slice();
Vector.<Foo> newVector = oldVector.slice();
和
Array newArray = oldArray;
Vector.<Foo> newVector = oldVector;
之間的區別?另外,如果Vector的基類型不是Foo,但是像int那樣簡單且不可變的東西呢?
更新:
什麼是下面的結果呢?
var one:Vector.<String> = new Vector.<String>()
one.push("something");
one.push("something else");
var two:Vector.<String> = one.slice();
one.push("and another thing");
two.push("and the last thing");
trace(one); // something, something else, and another thing
trace(two); // something, something else, and the last thing
謝謝! ♥
你的意思是'oldArray'和'newArray'的內容是相同的對象,但引用是不同的? – Svetlana 2011-02-23 16:35:49
@Svetlana:當'.slice()'不同時,由'oldArray'和'newArray'表示的對象,但如果屬性的引用屬於非原始類型,則它們的屬性引用可能會有所不同。如果你簡單地將一個分配給另一個,那麼它們都是對同一個對象的不同引用。 – BoltClock 2011-02-23 16:37:34