Ada*_*ady 10 javascript object tostring
我已经阅读了一些材料,并且在语法方面没有完全掌握这个概念,如下所示:
var arrObj = [1,2,3];
Object.prototype.toString.call(arrObj); //Gives "[object Array]"
arrObj.toString(); // Gives "1,2,3"
Run Code Online (Sandbox Code Playgroud)
2号线和3号线有何不同?据我所知,两者都调用toString方法,当前对象设置为'arrObj'.
the*_*eye 12
由于toString定义了Object.prototype,无论谁继承Object,默认情况下都会获得该toString方法.
但是,Array对象覆盖默认toString方法以将数组元素打印为逗号分隔的字符串.
Object.prototype.toString不知道它实际处理的对象类型.因此,它有意保持通用,并始终打印对象的实际类型.这就是为什么
console.log(Object.prototype.toString.call(arrObj));
Run Code Online (Sandbox Code Playgroud)
版画
[object Array]
Run Code Online (Sandbox Code Playgroud)
这是传递的对象的类型.但是,当你这样做时arrObj.toString,你试图以String形式表示数组,因此toString在Array对象中重写以将数组元素打印为逗号分隔的字符串.
这就是为什么两个电话都不同的原因.
但是在其他对象的情况下,toString不会覆盖,所以他们将使用toStringfrom Object.prototype.toString.例如,
var obj = {
1: 2
};
console.log(obj.toString());
// [object Object]
Run Code Online (Sandbox Code Playgroud)
toString被重写为阵列 ; 并且
Object.prototype.toString不同于Array.prototype.toString.
要获得相同的结果,请call在"正确"方法上使用它:
Array.prototype.toString.call(arrObj); // Gives "1,2,3"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2789 次 |
| 最近记录: |