JavaScript中String.prototype用法实例

作者:函数茶馆

时间:2026-10-29

浏览:200

本文介绍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程序设计工作有所帮助。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章