百科狗-知识改变命运!
--

Object.prototype.toString() - JavaScript Object 对象

梵高1年前 (2023-11-21)阅读数 19#技术干货
文章标签对象

Object.prototype.toString()

toString()方法返回一个表示该对象的字符串。

语法

obj.toString()

返回值

一个表示该对象的字符串。

描述

每个对象都有一个toString()方法,当该对象被表示为一个文本值时,或者一个对象以预期的字符串方式引用时自动调用。默认情况下,toString()方法被每个Object对象继承。如果此方法在自定义对象中未被覆盖,toString()返回"[object type]",其中type是对象的类型。以下代码说明了这一点:

var o = new Object();
o.toString(); // returns [object Object]
注意:如的ECMAScript 5 和随后的 Errata 中所定义,从 JavaScript 1.8.5 开始,toString()调用null返回[object Null]undefined返回[object Undefined]。请参阅下面的使用toString()检测对象类型。

示例

覆盖默认的toString方法

可以自定义一个方法,来取代默认的toString()方法。该toString()方法不能传入参数,并且必须返回一个字符串。自定义的toString()方法可以是任何我们需要的值,但如果它附带有关对象的信息,它将变得非常有用。

以下代码定义了Dog对象类型,并创建了一个Dog类型的theDog对象:

function Dog(name,breed,color,sex) {
  this.name = name;
  this.breed = breed;
  this.color = color;
  this.sex = sex;
}

var theDog = new Dog("Gabby", "Lab", "chocolate", "female");

Object.prototype.toString() - JavaScript Object 对象

如果当前的对象调用了toString()方法,它将会返回从Object继承而来的toString()方法的返回默认值:

theDog.toString(); // 返回 [object Object]

下面的代码中定义了一个叫做dogToString()的方法来覆盖默认的toString()方法。这个方法生成一个"property = value;"形式的字符串,该字符串包含了当前对象的 name、breed、color 和 sex 的值。

Dog.prototype.toString = function dogToString() {
 var ret = "Dog " + this.name + " is a " + this.sex + " " + this.color + " " + this.breed;
 return ret;
}

也可以这样写

Dog.prototype.toString = function dogToString() {
  return `Dog ${this.name} is a ${this.sex} ${this.color} ${this.breed}`;
}

使用上述代码,任何时候在字符串上下文中使用theDog.toString()时,JavaScript 都会自动调用dogToString()方法(dogToString()可以是一个匿名函数),并且返回以下字符串:

"Dog Gabby is a female chocolate Lab"

使用toString()检测对象类型

可以通过toString()来获取每个对象的类型。为了每个对象都能通过Object.prototype.toString()来检测,需要以Function.prototype.call()或者Function.prototype.apply()的形式来调用,传递要检查的对象作为第一个参数,称为thisArg

var toString = Object.prototype.toString;

toString.call(new Date); // [object Date]
toString.call(new String); // [object String]
toString.call(Math); // [object Math]

//Since JavaScript 1.8.5
toString.call(undefined); // [object Undefined]
toString.call(null); // [object Null]

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)