在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”属性了吗?)请教大家,谢谢!
2 回答
亚努人
TA贡献58条经验 获得超75个赞
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")却不能通过,请大家再帮忙想想,有没有其他方法,或者帮忙检查下我的代码还需修改的地方,在不改变题目原意的情况下,有没有更好的代码,谢谢!
添加回答
举报
0/150
提交
取消