以下显示的代码使用toString()
方法对数据类型进行少量转换的结果。
所有其他数据类型都可以使用toString()
方法转换为字符串,但是当尝试使用toString()
方法将对象转换为字符串时,它会给出奇怪的结果,它是" [object Object]"
var b =1
b.toString();// produce "1"
var x=function(){var y=1;};
x.toString();// produce "function (){var y=1;}"
var z = [1,2];
z.toString();// produce "1,2"
var a = new Date;
//a = Date {Thu Dec 25 2014 22:44:32 GMT+0530 (Sri Lanka Standard Time)}
a.toString();// produce "Thu Dec 25 2014 22:44:32 GMT+0530 (Sri Lanka Standard Time)"
var obj = { name: 'John' }
obj.toString();// produce "[object Object]"
我想知道当我们尝试使用toString()
方法将对象转换为字符串时,为什么它会产生奇怪的结果。
而不是给出" [object Object]"为什么不会toString()
方法返回此值" {name:' John' }"
答案 0 :(得分:1)
在Javascript中,所有对象都从Object继承。对于自定义对象,如果未定义toString()方法,它将从其父类继承它。所以obj.toString()打印“[object Object]”,因为它是Object类型的对象(基本类型)。
答案 1 :(得分:0)
Javascript有几个内置对象,
例如:
每个对象都以不同的方式实现toString
方法。
对于用户定义的对象,默认的toString方法返回[object Object]
。你可以根据需要覆盖它..
function Car(type){
this.type = type;
}
Car.prototype.toString = function(){
return this.type + " car";
}
var car = new Car('bmw');
alert(car.toString());// produce "bmw car"

你甚至可以重写Object.prototype.toString
方法(但可能不是一个好主意)。
Object.prototype.toString = function() {
return JSON.stringify(this); ;
}
var obj = { name: 'John' }
alert(obj.toString());// produce "{ "name": "John"}"