JavaScript中String.prototype用法实例
本文介绍JavaScript中利用String.prototype扩展内部对象属性和方法的技巧,包括添加自定义方法与重载内置方法。同时解析isPrototypeOf()方法在判断对象是否存在于原型链中的作用,并提供相关代码示例供参考。
JavaScript扩展String原型链与isPrototypeOf方法详解
本文通过具体实例详细解析JavaScript中String.prototype的用法,旨在为开发者提供实用的参考与借鉴。
// 返回字符的长度,一个中文算2个
String.prototype.ChineseLength=function()
{
return this.replace(/[^\x00-\xff]/g,"**").length;
}
// 判断字符串是否以指定的字符串结束
String.prototype.EndsWith = function(str)
{
return this.substr(this.length - str.length) == str;
}
// 去掉字符左端的的空白字符
String.prototype.LeftTrim = function()
{
return this.replace(/(^[\\s]*)/g, "");
}
// 去掉字符右端的空白字符
String.prototype.RightTrim = function()
{
return this.replace(/([\\s]*$)/g, "");
}
// 判断字符串是否以指定的字符串开始
String.prototype.StartsWith = function(str)
{
return this.substr(0, str.length) == str;
}
// 去掉字符两端的空白字符
String.prototype.Trim = function()
{
return this.replace(/(^\s*)|(\s*$)/g, "");
}
这种技巧常用于为String、Math等内置对象添加额外的属性和方法。对于任何内置对象或自定义对象,均可通过prototype机制来重载其原有的属性和方法。在调用执行时,系统将优先使用开发者自定义定义的方法或属性。具体实现代码如下:
// 为内部 String 对象添加方法
String.prototype.myMethod = function(){
return "my define method";
}
// 为内部 String 对象重载方法
String.prototype.toString = function(){
return "my define toString method";
}
var myObj = new String("foo");
alert(myObj.myMethod());
alert(myObj);
alert("foo".toString());
此外需注意,所有JavaScript内置对象的prototype属性均为只读状态。虽然可以像上文示例那样为内置对象的原型添加或重载属性和方法,但无法直接修改该内置对象的prototype引用。不过,自定义对象可以被赋予新的原型。因此,尝试执行类似如下的操作并无实际意义:
function Employee() {
this.dept = "HR";
this.manager = "John Johnson";
}
String.prototype = new Employee;
var myString = new String("foo");
上述代码在运行时不会抛出错误,但若尝试调用myString.dept,将返回未定义(undefined)的值。
另一个常用的原型方法是isPrototypeOf(),其主要功能是判断指定对象是否存在于另一个对象的原型链中。其语法格式如下:
object1.prototype.isPrototypeOf(0bject2);
该格式用于判断Object2是否位于Object1的原型链中。具体示例如下:
function Person() {
this.name = "Rob Roberson";
this.age = 31;
}
function Employee() {
this.dept = "HR";
this.manager = "John Johnson";
}
Employee.prototype = new Person();
var Ken = new Employee();
当分别执行Employee.prototype.isPrototypeOf(Ken)、Person.prototype.isPrototypeOf(Ken)以及Object.prototype.isPrototypeOf(Ken)时,上述调用均会返回true。
希望本文所述内容能对各位的JavaScript程序设计工作有所帮助。
JS大数值转字符串出现科学计数法怎么办
2026-11-05 17:09:21
JS split切割后出现空字符串怎么过滤
2026-11-05 16:00:30
在 React 或 Vue 项目中封装使用 JS 节流防抖
2026-11-05 15:27:29
JavaScript中怎么将带小数的字符串转为整数?
2026-11-05 14:32:38
怎么用JavaScript策略模式重构电商促销计算逻辑?
2026-11-05 14:01:09
