关于valueOf() 和 toString(),我们需要知道的事儿,valueoftostring
分享于 点击 34712 次 点评:19
关于valueOf() 和 toString(),我们需要知道的事儿,valueoftostring
以下代码均在Chrome控制台测试。
1.valueOf()
var a = [1];a.valueOf()
[1]
Boolean 布尔值。
var b =true;b.valueOf()
true
Date 存储的时间是从 1970 年 1 月 1 日午夜开始计的毫秒数 UTC。
var d =new Date();d.valueOf()
1533023968670
Function 函数本身。
var f = new Function();f.valueOf();
ƒ anonymous() {
}
Number 数字值。
var n = new Number();n.valueOf()
0
var n = new Number(8);n.valueOf()
8
var n = new Number('');n.valueOf()
0
var n = new Number('7');n.valueOf()
7
Object 对象本身。这是默认情况。
var o =new Object();o.valueOf()
{}
String 字符串值。
var s =new String();s.valueOf()
""
var s =new String('');s.valueOf()
""
Math对象没有 valueOf 方法,会报错:
var m = new Math();m.valueOf()
VM2102:1 Uncaught TypeError: Math is not a constructor
at <anonymous>:1:9
(anonymous) @ VM2102:1
Error 对象:
var e = new Error();e.valueOf()
Error
at <anonymous>:1:9
------------ 分割线 -------------
var e = new Error();e.toString()
"Error"
2.toString()
var o = new Object();
o.toString();
控制台返回结果:"[object Object]"
4.可以使用toString()检测对象类型
例如:
var a="dd";
toString.call(a);
"[object String]"
function isString(arg){
return Object.prototype.toString.call(arg)
=== "[object String]"
}
两者都可以通过显示原型重新定义:
myObject.prototype.valueOf() = function myValueOf(){};
myObject.prototype.toString() = function myToString(){};
重写函数都可以为匿名函数。
补充说明——Java也存在类似情况:一个类可以自定义(重写)toString方法。
我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2e6ek1a3vmjoo
相关文章
- 暂无相关文章
用户点评