var?MyString=function(str)?{
????var?list?=?[];
????for?(var?i?in?str)?{
????????list[i]?=?str[i];
????}
????this.list?=?list;
????this.toString=toString;
????this.valueOf=valueOf;
????this.charAt=charAt;
????this.concat=concat;
????this.slice=slice;
????this.split=split;
????this.reverse=reverse;
};
function?toString(){
????var?a_str='';
????for(var?i=0;i<this.list.length;i++)
????{
????????a_str+=this.list[i];
????}
????return?a_str;
}
function?valueOf(){
????return?this.toString();
}
function?charAt(n){
????var?c_str='';
????c_str=this.list[n]
????return?c_str;
}
function?concat(ch){
????return?this.toString()+ch;
}
function?slice(m,n){
????var?s_str='';
????if(n>0){
????????for(var?i=m;i<n;i++){
????????????s_str+=this.list[i];
????????}
????}else?if(n<0){
????????var?len=this.list.length;
????????for(var?i=m;i<n+len;i++){
????????????s_str+=this.list[i];
????????}
????}
????return?s_str;
}
function?split(element){
????for(var?i=0;i<this.list.length;i++){
????????if(?this.list[i]==element){
????????????return?i;
????????}
????}
????var?slist=[];
????slist=this.list.split(i,1);
????return?slist;
}
function?reverse(){
????var?re_str=this.list.reverse();
????return?re_str.join('').toString();
}
var?s=new?MyString('hello');
s.toString();???????//'hello'
s.valueOf();????????//'hello'
s.charAt(2);????????//'l'
s.concat('?world');?//'hello?word'
s.slice(1,3);???????//'el'
s.slice(0,-1);??????//'hell'
s.split('e');??????//"h",?"l",?"l",?"o"
s.reverse();????????//'olleh'