08/01/15 19:00:57 WRZBLVEl
>>573
不定の宣言はできないが、
ひとつ裏ワザを伝授しよう。
class AutoArray extends Array {
/**
* コンストラクタ
*/
function AutoArray() {
super.Array(...);
Scripts.setCallMissing(this); // missingメソッドを有効にする
}
/**
* missing メソッド。メンバが存在しない場合に呼ばれる
* @param get_or_set setなら1
* @param name アクセスしようとしたメンバ名
* @param value get時は結果の参照、set時は設定値
* @return 値を処理した場合は true を返す。false を返すと正規の処理
*/
function missing(get_or_set, name, value) {
if (!get_or_set) {
*value = this[name] = [];
return true;
}
return false;
}
};
var a = new AutoArray();
a[100][200] = 1; // エラーにならない