新建构造器函数实现内建String方法和属性

在String()构造器不存在的情况下自定义一个MyString()函数,实现如下内建String()方法和属性:

var s = new MyString(“hello”);
s.length;  //5
s[0];  //"h"
s.toString();  //"hello"
s.charAt(1);  //"e"
s.charAt("e");  //"h"  (这个是怎么来的???)
s.slice(0,-1);  //"hell"
s.split("e");  //["h","llo"]
s.reverse();  //"olleh"

 题目提示用把字符串当做数组用for循环遍历,(但是用for循环不就会用到“.length”属性了吗?)请教大家,谢谢!

亚努人
浏览 1935回答 2
2回答

天启之魂

for循环也需要使用.length属性,foreach就不需要了

亚努人

var MyString = function(str){   var list = [];   for(var i in str){     list[i] = str[i];   }      list.toString = function(){     var str = "";     for(var a=0;a<list.length;a++){       str = str+list[a];     }     return str;   };        list.valueOf = function(){     var str = "";     for(var a=0;a<list.length;a++){       str = str+list[a];     }     return str;   };      /*list.charAt = function(index){     return list[index];   };*/      list.concat = function(st){     return str+st;   };      list.slice = function(min,max){     if(min<max){       s = "";       for(var m=min;m<max;m++){         s += str[m];       }       return s;     }else if(max<0){       s = "";       for(var m=min;m<max+str.length;m++){         s += str[m];       }       return s;     }else{       return "error";     }   };      list.reverse = function(){     arr = [];     for(var i in str){       arr[i] = str[i];     }     arr = arr.reverse();     s = "";     for(var i=0;i<arr.length;i++){       s += arr[i];        }     return s;   }      list.split = function(s){      arr = [];     s_str = "";     var a = 0;     for(var i in str){             if(str[i] === s){         arr[a] = s_str;         a++;         s_str = "";       }else{         s_str += str[i];         continue;       }           }     arr[a] = s_str;        return arr;   }     return list; }; var s = MyString("Hello"); s.split("e");这道题我的代码如上,但是charAt("e")却不能通过,请大家再帮忙想想,有没有其他方法,或者帮忙检查下我的代码还需修改的地方,在不改变题目原意的情况下,有没有更好的代码,谢谢!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript