详谈javascript的toString()方法

toString方法

作用

  • 强制数据类型转换
  • 对象的默认返回值
  • 修改toString的返回值

强制数据类型转换

toString做强制类型转换,我在另一篇文章javascript的强制数据类型转换有详细的介绍,这里不做述赘。https://blog.youkuaiyun.com/qq_41604269/article/details/82855778


对象的默认返回值

当我们直接在页面中打印一个对象时,实际上是输出对象的toString()方法的返回值。

例1:

		function Person(name,gender,age){
			this.name = name;
			this.gender = gender;
			this.age = age;
		}

		var per1 = new Person("张三","男",18);
		//打印per1对象
		alert(per1);

结果为 [object Object]

如果我们不希望在打印对象时出现[object Object]这种信息,可以给对象添加一个toString()方法显示自定义内容。

注意:这是指添加,而不是修改。为什么不是修改呢?因为toString()方法的真正位置在对象的原型的原型里面。此篇文章会详细介绍toString的真实位置并告知如何修改其返回值。想了解原型请戳我的另一篇文章:详谈prototype和__proto__原型

例2:添加toString()方法

		function Person(name,gender,age){
			this.name = name;
			this.gender = gender;
			this.age = age;
		}

		var per1 = new Person("张三","男",18);

		//给per1对象添加toString()方法
		per1.toString= function(){
			alert("这是一个对象");
		}
		//打印per1对象
		alert(per1);

结果为  这是一个对象

 

在例2代码的同一Person类下,再创建一个对象per2,此时打印per2对象仍是返回 [object Object]。怎么样才能在打印这些对象时都返回这是一个对象而不是 [object Object]呢?

解决方法:要先找到toString()方法的具体位置,然后将其返回值由[object Object]修改为这是一个对象即可。


 

修改toString的返回值

toString的真实位置并修改其返回值。

toString的真实位置:

前提创建了类Person和实例per1、per2

则真实位置:Person.prototype.toString或者per1.__proto__.toString或者per2.__proto__.toString

 

验证真实位置:Person.prototype.hasOwnProperty("toString")

或者per1.__proto__.hasOwnProperty("toString")或者per2.__proto__.hasOwnProperty("toString")

 

修改toString方法的返回值:

修改Person原型的toString

Person.prototype.toString = function(){

return "这是一个对象";

}

per1.__proto__.toString = function(){

return "这是一个对象";

}

per2.__proto__.toString = function(){

return "这是一个对象";

}

修改完毕后,打印任意对象返回值皆为这是一个对象

修改代码1:对象返回值固定为 这是一个对象

		function Person(name,gender,age){
			this.name = name;
			this.gender = gender;
			this.age = age;
		}

		var per1 = new Person("张三","男",18);
		var per2 = new Person("李四","男",20);

//修改返回值为 这是一个对象
Person.prototype.toString = function(){

return "这是一个对象";

}
/*
或者

per1.__proto__.toString = function(){

return "这是一个对象";

}

或者

per2.__proto__.toString = function(){

return "这是一个对象";

}
*/
alert(per1);
alert(per2);

修改代码2:对象返回值为 具体对象的具体属性信息

		function Person(name,gender,age){
			this.name = name;
			this.gender = gender;
			this.age = age;
		}

		var per1 = new Person("张三","男",18);
		var per2 = new Person("李四","女",20);

//修改返回值为 具体属性值
Person.prototype.toString = function(){

return "姓名:"+this.name+",性别:"+this.gender+",年龄:"+this.age;

}
/*
或者

per1.__proto__.toString = function(){

return "姓名:"+this.name+",性别:"+this.gender+",年龄:"+this.age;

}

或者

per2.__proto__.toString = function(){

return "姓名:"+this.name+",性别:"+this.gender+",年龄:"+this.age;

}
*/

alert(per1);
alert(per2);

 

### 回答1: JavaScript中的toString()方法是将一个对象转换为字符串的方法。它可以被应用于任何JavaScript对象,包括数字、数组、日期、函数等等。当应用于数字toString()方法可以将数字转换为字符串。当应用于数组toString()方法可以将数组转换为逗号分隔的字符串。当应用于日期toString()方法可以将日期转换为字符串。当应用于函数toString()方法可以将函数转换为字符串形式的函数定义。 ### 回答2: Javascript中的toString()方法是用来将一个对象转换为字符串的方法。这个方法可以应用于字符串、数字和日期对象以及函数对象等。当我们需要将一个对象的值以字符串的形式展示或者进行字符操作,就可以使用toString()方法。 对于字符串对象,toString()方法返回字符串本身的值,不会有任何改变。例如:var str = "Hello world!"; str.toString(); 返回的结果仍然是"Hello world!"。 对于数字对象,toString()方法可以将数字转换为字符串。我们可以通过指定参数来表示数字的进制,参数可以是2-36之间的任意整数。例如:var num = 10; num.toString(2); 将返回"1010",表示10的二进制形式。 对于日期对象,toString()方法返回一个显示日期和间的字符串。例如:var date = new Date(); date.toString(); 返回的结果会类似于"Mon Jun 14 2021 10:30:00 GMT+0800 (中国标准间)"。 对于函数对象,toString()方法返回一个表示函数源代码的字符串。例如:var func = function(){ console.log("Hello world!"); }; func.toString(); 将返回"function(){ console.log("Hello world!"); }"。 需要注意的是,toString()方法不会修改原始对象的值,而是返回一个新的字符串值。如果我们需要改变原始对象的值,可以将返回的字符串赋值给原始对象。 总之,toString()方法Javascript中用于将对象转换为字符串,可以应用于字符串、数字、日期和函数对象等。它是非常常用的一个方法,可以帮助我们方便地处理和操作不同类型的数据。 ### 回答3: JavaScript中的toString()方法用于将数据类型转换为字符串。它可以用于字符串、数字、布尔值、日期、数组、对象等不同的数据类型。 对于字符串类型,toString()方法返回字符串本身,因为它已经是字符串类型了。 对于数字类型,toString()方法将数字转换为字符串。例如,对于数字10,toString()方法返回字符串"10"。 对于布尔值类型,toString()方法将布尔值转换为字符串。例如,对于布尔值true,toString()方法返回字符串"true"。 对于日期类型,toString()方法将日期对象转换为字符串。例如,对于日期对象new Date()toString()方法返回表示日期和间的字符串。 对于数组类型,toString()方法将数组转换为字符串。例如,对于数组['apple', 'banana', 'orange'],toString()方法返回字符串"apple,banana,orange",元素之间用逗号分隔。 对于对象类型,toString()方法通常返回对象的类的名称和内存地址的字符串表示。但是,可以通过在对象的原型链中重写toString()方法来自定义对象的toString()行为。 需要注意的是,toString()方法不会修改原始值,而是返回一个新的字符串。另外,对于null和undefined来说,调用toString()方法会引发TypeError错误。 综上所述,toString()方法JavaScript中用于将不同数据类型转换为字符串的方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值