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程序设计有所帮助。