You are on page 1of 3

Ticore's Blog: AS3 技巧 - 利用 internal namespace 動態存取 scope chain 的區域變數

TICORE'S BLOG
FLASH、FLEX 、AIR、ACTIONSCRIPT 相關研究心得

  首頁 較舊的文章 »

2010年10月2 日星期六

momo-牛爾明星組推薦
女人我最大指定推薦 明星凍膜買2送2組 送美白
凍膜與眼周凍膜優惠搶購中 AS3 技巧 - 利用 internal namespace 動態存取 scope
h t
chain 的區域變數
眾所皆知,Javascript 是可以利用 eval 動態存取 scope chain 的區域變數
GOOGLE SITESEARCH
如下所示:
Google 搜尋

var obj = {};


Web Ticore's Blog (function(obj) {
var var3 = "Variable 3";
(function(obj) {
var var2 = "Variable 2";
關於我自己
(function(obj) {
TICORE SHIH var var1 = "Variable 1";
板橋, TAIWAN obj.getVar = function(varName) {
return eval(varName);
Flash/Flex Developer
}
檢視我的完整簡介 obj.setVar = function(varName, value) {
return eval(varName + "=value;"); // 這樣就能把 value 指定到區
域變數上
}
})(obj);
})(obj);
})(obj);

alert(obj.getVar("var2")); // Variable 2
obj.setVar("var2", {id: 123})
alert(obj.getVar("var2").id); // 123
訂閱

發表文章 ActionScript 3.0 改版之後拿掉了 eval 功能


難道因為這樣就無法動態評估存取區域變數了嗎?
留言
之前我也是這樣想的
不過最近再次看到 scope chain 相關文章
BLOG 歷史文章
結合過去所學過的 AS3 namespace 語法
blog歷史文章
blog 歷史文章 忽然有了其它的想法,於是開始動手測試~

測試後又有了新的發現
標籤
原來我們『可以利用 internal namespace 動態存取 scope chain 的區域變數!』
ActionScript (285) Adobe- AS3 語法內建的 namespace 主要有 AS3、public、protected、private、internal
AIR (24) Ajax (11) ApplicationDomain
...等
(9) AS1 (11) AS2 (49) AS3 ActionScript language and syntax - Packages and namespaces
(233) BitmapData (10) Bug ActionScript 語言和語法 - 套件和命名空間
(145) Chrome (19) Compiler (12) 關鍵就是在 internal namespace 語法
CSS (38) CSS3 (31) Data-Binding 文件上寫的是可以存取 package 層級的名稱空間
(15) DataGrid (11) Debug (12)
但是其實還能用來存取 scope chain 的區域變數
DisplayObject (26) Documents (14)
E4X (30) Event-Flow (6) Event-

http://ticore.blogspot.com/2010/10/access-scope-chain-via-internal.html[2010/10/02 20:47:19]
Ticore's Blog: AS3 技巧 - 利用 internal namespace 動態存取 scope chain 的區域變數

以下是一個簡單的 Demo:
Listener (21) Firefox (46) Flash
view plain | print | ? | 
(167) Flash-CS4 (13) Flash-Media-
∙∙∙∙∙∙∙∙∙10∙∙∙∙∙∙∙∙20∙∙∙∙∙∙∙∙30∙∙∙∙∙∙∙∙40∙∙∙∙∙∙∙∙50∙∙∙∙∙∙∙∙60∙
Server (10) Flash-Player (76) 01. package {
Flash-Remoting (6) Flex (118) Flex-4- 02.  /**
Gumbo (10) Font (14) Frame-Script (10) 03.   * 透過 internal 名稱空間動態存取 scope chain variable
Function-Closure (10) GC (15) 04.   */
05.  import flash.display.Sprite;
Graphics (18)HTML (51) IE (18) 06.  
JavaScript (44) Layout (17) Linux 07.  [SWF(width="300", height="200")]
(9) Mashup (17) Mask (4) Metadata-Tag (5) 08.  public class ScopeTest01 extends Sprite {
09.   
Mouse (15) MovieClip (18) MXML 10.   public function ScopeTest01() {
(68) Namespace (10) NetConnection 11.  
(8) NEWS (24) Object-Comparison (8) 12.    var obj:Object = {};
Oddity (32) Prototype-Function (6) 13.    (function(obj:Object):void{
Proxy-Object (7) Rendering (25) Scale-9 14.     var var1:String = "Variable 1";
(4) Scope-Chain (12) SharedObject (7) 15.     var var2:String = "Variable 2";
Silverlight (9) Skin (10) Technology (17) 16.     
TextField (22) Timeline (6) Tools (12) 17.     obj.getVar = function (name:String):*{
18.      return internal::[name];
Transparent (9) Trick (125) 19.     };
UIComponent (22) Undocumented 20.     obj.setVar = function (name:String, value:*):*{
(15) Usability (10) Video (5) XML (27) 21.      return internal::[name] = value;
22.     };
23.    })(obj);
RECENT COMMENTS 24.    
25.    trace(obj.getVar("var1")); // Variable 1
這是網頁標準,CSS 已經行之有年, 26.    obj.setVar("var1", "Hello");
部分套裝應用也用的爐火純青; 主 27.    trace(obj.getVar("var1")); // Hello
要在瀏覽器是否有按照標準在執行 28.   }
支... - Monday, September 20, 29.  }
2010 - hudson 30. }
@Nansen SubWin.as 自行就編譯成 31. // Ticore's Blog - http://ticore.blogspot.com/
SubWin.swf ? Flash Builde... -
 Saturday, September 11, 2010 - 很神奇吧!
 {id: "Ticore"}; // AS3 拿掉 eval 之後損失的動態評估能力,又靠著 internal namespace 巧妙的找
沒有,Application是Main Window 回來了
SubWin.as自行就編譯
成SubWin.s... - Saturday, 相關連結:
September 11, 2010 - Nansen AS3 利用 with, Proxy 選擇性替換 Scope Variables
@Nansen 那是用什麼方式把 SubWin
ActionScript "with" Block Scope 遮蔽效應
編譯成為獨立 SWF 的? 直接把
SubWin 指... - Friday, September ActionScript 3.0 - Function Closure
10, 2010 - {id: "Ticore"}; AS 3.0 利用匿名函式模擬多層 Block Scope
//
ActionScript 3 Namespace
子視窗是一個Custom MXML
component 根節點就是SubWin Flash MX 中的範圍鏈 (scope chain)與記憶體浪費
而SubWin是一個... - Friday,
轉載請註明出處 http://ticore.blogspot.com/2010/10/access-scope-chain-via-
September 10, 2010 - Nansen
internal.html

讚 6 個人說這讚。
BLOG ROLL

[Google DevFest 2010 Taipei Local


Demos #2簡報] How I Use Google
Technology to Enhanced Travel 張貼者:{ID: "TICORE"}; // 於 10/02/2010 03:13:00 下午
Experience 標籤: ACTIONSCRIPT , AS3 , FLASH - PLAYER , JAVASCRIPT , NAMESPACE , SCOPE -
at Saturday, October 02, 2010 CHAIN , TRICK
19:10:46 by lis

AS3 技巧 - 利用 internal namespace


動態存取 scope chain 的區域變數
at Saturday, October 02, 2010
15:13:00 by {id: "Ticore"}; // 0 意見 :
(noreply@blogger.com)

我明天在Google DevFest 2010 張貼意見


Taipei將展示的作品
at Thursday, September 30, 2010 活躍投資者享250次免佣交易 LMEM 羅義機電有限公司

http://ticore.blogspot.com/2010/10/access-scope-chain-via-internal.html[2010/10/02 20:47:19]
Ticore's Blog: AS3 技巧 - 利用 internal namespace 動態存取 scope chain 的區域變數

09:37:50 by lis 嘉信理財給你專業交易顧問團隊及先進 網上工 Produce NTC Thermistor,Thermistor Sensor


具,即開戶成為嘉信活躍投資者 and High Power Resistor
載入Youtube影片 Part2

首頁 較舊的文章 »
GOOGLE ANALYTICS

訂閱: 張貼意見 ( Atom ), 張貼意見 (RSS)

COPYRIGHTS

本 著作 係採用 創用 CC 姓名標示-非商業性-相同方式分享 3.0 通用版 授權條款授

權.

http://ticore.blogspot.com/2010/10/access-scope-chain-via-internal.html[2010/10/02 20:47:19]

You might also like