OS:windows7
IDE:flashBuider 4.6
Flex SDK: 4.6.0
ActionScript3的for ... in
特性:
- 對Array會取回index。
- 對Object取回key(即屬性名稱)。
範例程式碼:
//建立一個陣列,內含三個元素
private var array:Array = ["one" , "two" , "three"];
//建立一個物件,內有三個屬性name , age , gender.
private var object:Object = {name:"小米" , age:"20" , gender:"男"};
protected function applicationCompleteHandler(event:FlexEvent):void
{
testArray();
trace("----------------------------");
testObject();
}
protected function testArray():void
{
//注意這裡取回的值會是字串型態
for (var index:String in array)
{
trace(index);
}
}
protected function testObject():void
{
for(var key:String in object)
{
trace(key);
}
}
輸出結果:
0
1
2
----------------------------
gender
name
age
回傳結果見到,陣列取回的是 index 值,而物件是取回key值。
小改一下測試函式如下,用以測試取回的索引與鍵值是否正確可用:
protected function testArray():void
{
//注意這裡取回的是字串型別
for (var index:String in array)
{
trace("Index 是 " + index + " \t array[" + index + "] 取得 " + array[index] );
}
}
protected function testObject():void
{
//其實物件屬性的使用除了一般的點號叫用也可以使用[]叫用。
//因此object.name也可以object["name"]來叫用
for(var key:String in object)
{
trace("Key 是 " + key + " \t object[" + key + "]\t 取得 " + object[key] );
}
}
輸出結果:
Index 是 0 array[0] 取得 one
Index 是 1 array[1] 取得 two
Index 是 2 array[2] 取得 three
----------------------------
Key 是 name object[name] 取得 小米
Key 是 age object[age] 取得 20
Key 是 gender object[gender] 取得 男
如此驗證取得的索引與鍵值可正確無誤
在做一個特別的測驗關於Array可以動態加上屬性
在ActionScript3的Array是可以執行時期(Run time)時動態加上屬性的,因此
protected function applicationCompleteHandler(event:FlexEvent):void
{
testArrayCharacteristic();
trace("--------------------");
array.name = "花花";
array.age = "27";
array.gender = "女";
testArrayCharacteristic();
}
protected function testArrayCharacteristic():void
{
for(var index:String in array)
{
trace(index);
}
}
輸出結果:
0
1
2
--------------------
0
1
2
gender
name
age
注意非常有趣,動態加入的屬性變成了Array的key值
而若你在最後再加上以下程式碼
for(var index:String in array)
{
trace(array[index]);
}
則可得:
one
two
three
27
花花
女
非常有趣的特性!
JavaScript的for ... in
<script>
var _array = new Array("one" , "two" , "three");
var _object = {a:"one" , b:"two" , c:"three"};
for(var index in _array)
{
document.write(index + "</br>");
document.write(_array[index]+"</br>");
}
document.write("==================</br>");
for(var key in _object)
{
document.write(key + "</br>");
document.write(_object[key]+"</br>");
}
</script>
//report
0
one
1
two
2
three
==================
a
one
b
two
c
three
在JavaScript部分,Array無法以_array[x]的方式來賦值,但可以_array.x = "五百"來賦值。
加入:
_array.x = "五百";
for(obj in _array)
{
document.write(obj + "</br>");
}
輸出:
0
1
2
x
沒有留言:
張貼留言