How To Discriminate Between JavaScript Object and ActionScript Object In AIR

chart-accept-128x128JavaScript and ActionScript share a nearly identical syntax, object model, and even many object classes because both of them are based on the ECMA-262 (ECMAScript) standard. ActionScript implements the arguments object, which supports the callee and length properties, just like JavaScript. ActionScript also implements the Array, Boolean, Date, Math, Number, Object, and String classes familiar to JavaScript programmers.Adobe AIR allows ActionScript and JavaScript base object can be convert each other.But sometimes we still need to know which is javascript objct and which is actionscript object.The following code shows how to detect Javascript objct and ActionScript.

Detect ActionScript Object in AIR ActionScript runtime:

  1. import flash.html.*;
  2. import flash.events.*;
  3. import flash.utils.*;
  4. import flash.system.*;
  5.  
  6. var htmlLdr:HTMLLoader = new HTMLLoader();
  7. var jsRuntime:Object = htmlLdr.window;
  8.  
  9. var asObj:Object = new Object();
  10. var asAry:* = new Array();
  11. var asDate:* = new Date();
  12. var asSprite:* = new flash.display.Sprite();
  13. var asXML:* = new XML();
  14. var asXMLList:* = new XMLList();
  15. var asRegExp:* = new RegExp();
  16. var asNS:* = new Namespace();
  17. var asFun:* = function():void{};
  18. var asNo:* = new Number();
  19. var asStr:* = new String();
  20. var asBol:* = new Boolean();
  21.  
  22. var jsObj:Object = new jsRuntime.Object();
  23. var jsAry:Object = new jsRuntime.Array();
  24. var jsDate:Object = new jsRuntime.Date();
  25. var jsFun:Object = new jsRuntime.Function("", "");
  26. var jsNo:Object = new jsRuntime.Number();
  27. var jsStr:Object = new jsRuntime.String();
  28. var jsBol:Object = new jsRuntime.Boolean();
  29.  
  30. function isASObject(o:*):Boolean{
  31. //return o.constructor is Class;
  32. return getQualifiedClassName(o).indexOf("flash.html::__HTMLScript") < 0;
  33. } 
  34.  
  35. trace(isASObject(asObj)); // true
  36. trace(isASObject(asAry)); // true
  37. trace(isASObject(asDate)); // true
  38. trace(isASObject(asSprite)); // true
  39. trace(isASObject(asXML)); // true
  40. trace(isASObject(asXMLList)); // true
  41. trace(isASObject(asRegExp)); // true
  42. trace(isASObject(asNS)); // true
  43. trace(isASObject(asFun)); // true
  44. trace(isASObject(asNo)); // true
  45. trace(isASObject(asStr)); // true
  46. trace(isASObject(asBol)); // true
  47.  
  48. trace(isASObject(jsObj)); // false
  49. trace(isASObject(jsAry)); // false
  50. trace(isASObject(jsDate)); // false
  51. trace(isASObject(jsFun)); // false
  52. trace(isASObject(jsNo)); // true
  53. trace(isASObject(jsStr)); // true
  54. trace(isASObject(jsBol)); // true

Detect JavaScript Object in AIR JavaScript runtime:

  1. var asObj = new runtime.Object();
  2. var asAry = new runtime.Array();
  3. var asDate = new runtime.Date();
  4. var asSprite = new runtime.flash.display.Sprite();
  5. var asXML = new runtime.XML();
  6. var asXMLList = new runtime.XMLList();
  7. var asRegExp = new runtime.RegExp();
  8. var asFun = runtime.trace;
  9. var asNo = new runtime.Number();
  10. var asStr = new runtime.String();
  11. var asBol = new runtime.Boolean();
  12.  
  13. var jsObj = new Object();
  14. var jsAry = new Array();
  15. var jsDate = new Date();
  16. var jsFun = function(){};
  17. var jsNo = 10;
  18. var jsStr = "str";
  19. var jsBol = true;
  20.  
  21. function isJSObject(o) {
  22. return o.constructor instanceof Function;
  23. } 
  24.  
  25. runtime.trace(isJSObject(asObj)); // false
  26. runtime.trace(isJSObject(asAry)); // false
  27. runtime.trace(isJSObject(asDate)); // false
  28. runtime.trace(isJSObject(asSprite)); // false
  29. runtime.trace(isJSObject(asXML)); // false
  30. runtime.trace(isJSObject(asXMLList)); // false
  31. runtime.trace(isJSObject(asRegExp)); // false
  32. runtime.trace(isJSObject(asFun)); // false
  33. runtime.trace(isJSObject(asStr)); // true
  34. runtime.trace(isJSObject(asNo)); // true
  35. runtime.trace(isJSObject(asBol)); // true
  36.  
  37. runtime.trace(isJSObject(jsObj)); // true
  38. runtime.trace(isJSObject(jsAry)); // true
  39. runtime.trace(isJSObject(jsDate)); // true
  40. runtime.trace(isJSObject(jsFun)); // true
  41. runtime.trace(isJSObject(jsStr)); // true
  42. runtime.trace(isJSObject(jsNo)); // true
  43. runtime.trace(isJSObject(jsBol)); // true
Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • DZone
  • Reddit
  • Technorati
  • StumbleUpon
  • Twitter
RSS Enjoy this Post? Subscribe to Ntt.cc

RSS Feed   RSS Feed     Email Feed  Email Feed
You can leave a response, or trackback from your own site.

One Response to “How To Discriminate Between JavaScript Object and ActionScript Object In AIR”

  1. [...] How To Discriminate Between JavaScript Object and ActionScript Object In AIR (0) [...]

Leave a Reply