String中没有trim(去除两端的字符串),可以自定义方法,但是只能传参等直接调用,与String对象可以说没什么关系,在js中可以用原型来使用str.trim()
这里就可以使用一个该字符串的原型属性来完成。
原型:就是该对象的一个描述,该描述中如果添加了新功能,那么该对象都会具备这些新功能,而prototype就可以获取到这个原型对象。
需求:想给String对象天界一个可以去除字符串两端空格的新功能,就可以通过原型来完成
给string的原型中添加一个新的功能
注意:给对象添加新的功能直接使用 对象.新内容 即可
String.prototype.len=199;//给String的原型对象中添加一个属性,名为len
①在html中写匿名函数
String.prototype.trim=function ()//匿名函数
{
var start=0;
var end=this.length-1;
while(start<=end && this.charAt(start)==' ')
{
start++;
println(start);
}
while(start<=end && this.charAt(end)==' ')
{
end--;
}
return this.substring(start,end+1);
}
alert("-"+" djv kl ".trim()+"-");
②可以写在js文档中方便调用
就是将①中的代码写入js文档中,在网页中加入
《script type=”text/javascript” src=”stringtool.js” 》《/script>》
练习①:将字符串转换为字符数组,用prototype实现
//js文档中
function toArray()
{
var arr=new Array(this.length);
for(var i=0;i<this.length;i++)
{
arr[i]=this.charAt(i);
}
return arr;
}
//html中
String.prototype.toArray=toArray;
var s="ahcvb".toArray();
alert(s);
练习②:将字符串反转
//js文档:
function reverse()
{
var arr=this.toArray();
var len=arr.length;
for(var i=0;i<len/2;i++)
{
var temp;
var p=len-(i+1);//和i调换的元素
temp=arr[i];
arr[i]=arr[p];
arr[p]=temp;
}
return arr.join("");
}
//html:
String.prototype.reverse=reverse;
alert("01234".reverse());
//Array的jion方法:将数组转换为字符串,元素由指定的分割符隔开,因为要输出字符串,即数组元素之间没有空格,所以用""隔开即可。
在JavaScript中允许函数内也有函数,js中函数就是一个封装体。