由于String() 不存在,因此在写该构造器函数时不能使用任何属于内建String对象的方法和属性。并且为您创建的对象通过一下测试:>s.length; 5 >s[0]; "h" >s.toString(); "hello" >s.valueOf(); "hello" >charAt(1); "e" >charAt('2'); "l" >charAt('e'); "l">s.concat(' world');"hello world">s.slice(1.3);"el">s.slice(0,-1);"hell">s.split('e');["h","llo"]>s.split("l");["he","","o"]
1 回答
geront
TA贡献1条经验 获得超0个赞
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'添加回答
举报
0/150
提交
取消
