我是Java開發人員。我最近的項目需要我瞭解一些反編譯的ActionScript。在flash actionscript中調用一個不存在的方法時會發生什麼?
我想我理解了大部分代碼,因爲語法與Java沒有多大區別。然而,它開始困惑我,當我看到
_loc_10 = {};
if (param1.lastIndexOf("?") != -1)
{
_loc_8 = param1.split("?", 2);
param1 = _loc_8[0];
_loc_13 = _loc_8[1];
_loc_10["mzsg"] = _loc_13;
}
if (param3 != null)
{
for (_loc_16 in param3)
{
_loc_10[_loc_16] = _loc_17[_loc_16];
}
}
_loc_10[this.CbSlotkey()] = this.CbSlotvalue();
_loc_11 = JSON.stringify(_loc_10);
_loc_15 = "";
_loc_15 = String.fromCharCode(this.CbSlot(), this.CbSlot2(), this.CbSlot3(), this.CbSlot4(), this.CbSlot5()) + this.CbSlot6();
_loc_12 = new URLVariables();
_loc_12.z = myzip(_loc_11);
_loc_12.b = MD5.hash(_loc_12.z + _loc_15);
param3 = _loc_12;
上半部分是所有的權利,但我找不到CbSlotKey()或CbSlotvalue()在整個代碼庫中的任何地方定義。當一個不存在的方法被調用時會發生什麼?在Java中,這個代碼甚至不會編譯。 actionscript編譯器不檢查方法的存在嗎?
關鍵字這個是什麼意思?我正在看的課程叫做HttpLoader。是這個指向HttpLoader或它可能指向別的東西?我在同一個類中找到類似下面的調用,並且方法顯然未在HttpLoader中定義?
this.escape(ver_build)
非常感謝您提前!
是否可以在動作在運行時添加方法?就像在JavaScript中一樣,我們可以做eval(*)並創建不存在的方法。 – user2375809