在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
提交
取消
