Object.prototype.toString()
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Object.prototype.toString()相关的知识,希望对你有一定的参考价值。
概述
toString()
方法返回一个代表该对象的字符串。
语法
object.toString()
描述
当对象需要转换为字符串时,会调用它的toString()方法
.。默认情况下,每个对象都会从
Object上继承到
toString()方法,
如果这个方法没有被这个对象自身或者更接近的上层原型上的同名方法覆盖(遮蔽),则调用该对象的toString()方法时会返回
"[object type]",这里的字符串type
表示了一个对象类型。下面的代码演示了这一点:
var o = new Object(); o.toString(); // 返回了[object Object]
示例
覆盖(遮蔽)默认的toString
方法
可以自定义个方法来取代默认的 toString()
方法。该 toString()
方法不能传入参数并且必须返回一个字符串。自定义的 toString()
方法可以是任何我们需要的值,but it will be most useful if it carries information about the object.
在下面的代码中,定义了一个 Dog
对象数据类型,并且创建了该对象的一个实例:
function Dog(name,breed,color,sex) { this.name=name; this.breed=breed; this.color=color; this.sex=sex; } theDog = new Dog("Gabby","Lab","chocolate","female");
如果当前的对象调用了 toString()
方法,它将会返回从 Object 继承下来的
toString()
方法的返回默认值:
theDog.toString(); //returns [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; }
有了上面的这段代码之后,在上下文中任何时候使用theDog
,javascript 都会自动调用dogToString()
方法,并且返回下面的字符串内容:
Dog Gabby is a female chocolate Lab
使用toString()方法来检测对象类型
可以通过toString()
来获取每个对象的类型。为了每个对象都能通过 Object.prototype.toString()
来检测,需要以 Function.prototype.call()
或者 Function.prototype.apply()
的形式来调用,把需要检测的对象作为第一个参数传入。
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]
以上是关于Object.prototype.toString()的主要内容,如果未能解决你的问题,请参考以下文章
Object.prototype.toString.call()方法
Object----Object.prototype.toString.call()方法的使用
Object.prototype.valueOf()和Object.prototype.toString()
Object.prototype.toString.call()方法