JavaScript中String.prototype用法实例
本文实例讲述了JavaScript中String.prototype用法。分享给大家供大家参考。具体如下:
//返回字符的长度,一个中文算2个
String.prototype.ChineseLength=function()
{
returnthis.replace(/[^\x00-\xff]/g,"**").length;
}
//判断字符串是否以指定的字符串结束
String.prototype.EndsWith=function(str)
{
returnthis.substr(this.length-str.length)==str;
}
//去掉字符左端的的空白字符
String.prototype.LeftTrim=function()
{
returnthis.replace(/(^[\\s]*)/g,"");
}
//去掉字符右端的空白字符
String.prototype.RightTrim=function()
{
returnthis.replace(/([\\s]*$)/g,"");
}
//判断字符串是否以指定的字符串开始
String.prototype.StartsWith=function(str)
{
returnthis.substr(0,str.length)==str;
}
//去掉字符两端的空白字符
String.prototype.Trim=function()
{
returnthis.replace(/(^\s*)|(\s*$)/g,"");
}
这就是我们经常看到的为内部对象,如String,Math等再添加其它属性和方法的技巧.对于任何的内部对象和自定义对象,你都也可以通过prototype来重载其下的属性和方法.那么在调用执行时,它将调用你所定义的方法和属性.下面是示例:
//为内部String对象添加方法
String.prototype.myMethod=function(){
return"mydefinemethod";
}
//为内部String对象重载方法
String.prototype.toString=function(){
return"mydefinetoStringmethod";
}
varmyObj=newString("foo");
alert(myObj.myMethod());
alert(myObj);
alert("foo".toString());
另外需要注意的是,所有JavaScript内部对的prototype属性都是只读的.你可以像上面那样为内部对象的原型添加或重载属性和方法,但不能更改该内部对象的prototype原型.然而,自定义对象可以被赋给新的原型.也就是说,像下面这样做是没有意思的.
functionEmployee(){
this.dept="HR";
this.manager="JohnJohnson";
}
String.prototype=newEmployee;
varmyString=newString("foo");
上面的程序在运行之后不会报错,但显然,如果你调用myString.dept将会得到一个非定义的值.
另外,一个经常使用的是prototype下的isPrototypeOf()方法,它主要用来判断指定对象是否存在于另一个对象的原型链中.语法如下:
object1.prototype.isPrototypeOf(0bject2);
上面的格式是用来判断Object2是否出现Object1的原型链中.示例如下:
functionPerson(){
this.name="RobRoberson";
this.age=31;
}
functionEmployee(){
this.dept="HR";
this.manager="JohnJohnson";
}
Employee.prototype=newPerson();
varKen=newEmployee();
当执行Employee.prototype.isPrototypeOf(Ken),Person.prototype.isPrototypeOf(Ken)和Object.prototype.isPrototypeOf(Ken)时,结果都会返回true.
希望本文所述对大家的javascript程序设计有所帮助。