
Код:
String.prototype.__resolve = function(p){
if(!isNaN(p)){
return this.charAt(p);
}
}
var a:String = "abcdefghjklmo";
trace(a[3]);

Единственное, что нужно понимать, что возвращенное значение будет не ссылкой на символ строки, а новой строкой, так что

Код:
a[3] = "z";
Не изменит изначальную строку
ЗЫ. Почему-то такая кончтрукция (попытка создать геттер\сеттеры не увенчалась успехом %) Но чего-то думать, как бы это обойти не хочется %)

Код:
String.prototype.__resolve = function(p){
if(!isNaN(p) && p<this.length){
this.___prop = "."+this.charAt(p);
this.gfunc = function(){
return this.___prop.charAt(1);
}
this.sfunc = function(_p){
this.split(this.___prop.charAt(1)).join(_p);
}
this.addProperty(this.charAt(p), this.gfunc, this.sfunc);
return this.gfunc();
}
}
var a:String = "abcdefghjklmo";
trace(a[3]);
a[3] = "z";
trace(a);
Так тоже не получилось =)

Код:
String.prototype.__resolve = function(p){
if(!isNaN(p) && p<this.length){
this.___prop = "."+this.charAt(p);
this.gfunc = function(){
return this.charAt(p);
}
this.sfunc = function(_p){
this.split(this.___prop.charAt(1)).join(_p);
}
this.addProperty(this.___prop, this.gfunc, this.sfunc);
if(this[this.___prop] == undefined) this[this.___prop] = this.charAt(p);
return this[this.___prop];
}
}
var a:String = "abcdefghjklmo";
trace(a[3]);
trace(a["___prop"]);
trace(a[".d"]);
a[3] = "z";
trace(a);