valueOf() 一般是自动调用,显示默认值
var str1="hello";
var str2=new String('hello');
console.log(typeof str2.valueOf(),typeof str2);//string object
cstr2本身是String构造函数创建的对象,但是它的原始值是string
console.log(str1==str2); //true
如何知道value它默认调用了?修改String类型构造函数的valueOf
String.prototype.valueOf=function(){
console.log('string执行了一次valueOf')
return true
};
console.log(str1==str2);
//string执行了一次valueOf
//false
这里是因为你把原来的valueOf覆盖了,所以返回false,这一步只是为了让你看到,在==时默认执行了valueOf,通过valueOf将str2从对象转换成了string