toString 深入理解

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'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值