toString方法 存在位置
1. Object.prototype(原型链最终原型) 的 toString 方法
2. new Array()/new Numer()/ new String()/ new Boolean() 的 Array/Numer/String/Boolean.prototype.toString() 方法
toString 常见问题
undefined/null 不能调用 toString 原因
数字直接toString (123.toString());
123.toString();
会把 . 当成浮点型 不会识别为对象调用
引用值 toString()
obj.toString()
var obj = {}
obj.toString();//"[object Object]"
// obj 是对象
// 调用 toString 方法
// 自身没有 该方法 通过 obj.__proto__ 调用 toString方法 有
// 然后返回 "[object Object]"
Array
var arr = [1.2.3]
arr.toString();// [1.2.3]
// 解析 同 Number
原始值 toString()
number
var num = 123;
num.toString();
// num 是原始值 没有属性和方法
// 调用属性和方法会 产生一个过程 叫包装类
// 隐式创建 一个 new Number(num ); 的 Number对象
// 然后调用该Number对象 的 toString方法
// 没有 通过 __proto__:Number.prototype 调用 toString方法 有
// 然后返回 '123'
// 调用 最终原型的toString方法
Object.prototype.toString.call(123);// "[object Number]"
string
var str = '123';
str.toString(); //'123'
// 解析 同 Number
boolean
true.toString();//'true'
// 解析 同 Number
toString() 方法重写
function Per(){
}
Per.prototype.toString = function(){return 'toString '}
var per = new Per()
per.toString();//'toString '
var obj = {}
obj.toString();// "[object Object]"
Object.prototype.toString = function(){
return 'toString';
}
obj.toString();//'toString'