标签:覆盖 拼接 代码 调用 简写 引用 cal str object
//由于很多内置对象都拥有覆盖了Object‘的toString 所以此处使用了Object的toString
//Object.prototype.toString只能获取内置对象的类型 自定义对象获取到都会是"[Object Object]"
//首先通过call方法(此方法可以让一个对象引用另一个对象的方法)调用Object.prototype.toString
//Object.prototype.toString可以获取构造方法中this指向constructionName 拼接为[Object constructionName]此处也可以理解为调用获取到括号中对象的构造函数名称
console.log(Object.prototype.toString.call([]));//[object Array]
console.log(Object.prototype.toString.call(new Date()));//[object Date]
console.log(Object.prototype.toString.call(Array));//[object Function]l(Array也是Function的对象)
console.log(({}).toString.call(Array));//[object Function]
// Object.prototype.toString可以简写为({}).toString.call(..)
// 但是不能写成{}.toString.call(..)
// 因为{}是js中的代码块所以会报错 此时使用()包裹等于就是进行了逻辑运算(var obj={}效果等同 逻辑运算符的效果) 是的({})就变成了对象字面量 所以就可以通过Object的
// 对象获取到它原型中toString方法!
标签:覆盖 拼接 代码 调用 简写 引用 cal str object
原文地址:http://www.cnblogs.com/stephen5538/p/6958706.html