[討論] 使用 literal
literal 帶有著 anonymouse(匿名) 的味道
也就是說一個 literal 資料沒有所謂的變數名稱
var i:Number = 10;
↑變數名稱 ↑Number literal,只代表10這個值,沒有名字
像是大家所熟知的字串表示方式 "abc" 也是一串String literal
literal 只有將他的值和其他變數合併,或者把值丟給變數才有意義
不然一個沒有名字的資料,出現過一次以後就再也沒辦法取得
當需要指派值給等號左方的變數
如果該值是"確定只會出現這一次"的話
就不需要再另外宣告一個變數佔空間,直接用literal可以節省空間
Flash除了primitive datatype 有literal 表示法以外
尚有Array, Object, Function有 literal 表示法
(1)Array literal - 相信許多人都很熟悉這個 literal 表示法
var a:Array = [1, 2, 3];
↑這個就是 Array literal
(2)Object literal - Object 物件只是一個可以裝變數的"容器"
所以他的 literal 表示法可以列舉出他所有的property
var b:Object = {i:Number = 1, j:Number = 2, k:Number = 3};
↑大括號包含的就是用列舉法列出的property
(3)Function - 函式也有 literal??
沒錯,在Flash裡面的函式其實也是一種物件
以下兩種函式 myFunc() 宣告方式其實是等價的
function myFunc(input:String):Void {
trace(input);
}
↑此為正常的函式宣告方式,也是大家所習慣使用的
var myFunc:Function = function(input:String):Void {
trace(input);
};
↑這個就是Function literal
有沒有注意到Function literal的下括號後面有個分號?
這就像是宣告變數的statement最後面有個分號一樣
所以Function literal的使用方式就是這樣
各種物件的event handler就是 Function objects
所以可以用指派變數的方式來修改event handler
this.createEmptyMovieCilp("clip_mc", 0);
this.clip_mc.onEnterFrame = function() {
trace("test message.");
};
以上event handler的使用方式大家應該都很習慣
但是其背後意義就是把一個 Function literal 丟給onEnterFrame這個物件
以上是Array, Object, 和 Function literal 的簡介
希望可以讓更多人了解 literal 這樣的概念 :)
--
CJ Cat = Croa'J Cat = Cockroach Cat = 西街凱特 = 蜚蠊貓 = 蟑螂貓
Gallery http://cjcat2266.deviantart.com
ptt2 Board CJWorkshop - 阿多比閃光(Adobe Flash)研討區
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.89.126
※ 編輯: cjcat2266 來自: 61.228.89.126 (10/05 02:06)
推
07/11 20:07, , 1F
07/11 20:07, 1F
Flash 近期熱門文章
PTT數位生活區 即時熱門文章