复杂数据类型如何转变为字符串

简介: 复杂数据类型如何转变为字符串
  • 首先,会调用 valueOf 方法,如果方法的返回值是一个基本数据类型,就返回这个值,
  • 如果调用 valueOf 方法之后的返回值仍旧是一个复杂数据类型,就会调用该对象的 toString 方法,
  • 如果 toString 方法调用之后的返回值是一个基本数据类型,就返回这个值,
  • 如果 toString 方法调用之后的返回值是一个复杂数据类型,就报一个错误。
// 1;
var obj = {
    valueOf: function() {
        return 1;
    }
};
console.log(obj + ""); //'1'
// 2;
var obj = {
    valueOf: function() {
        return [1, 2];
    }
};
console.log(obj + ""); //'[object Object]';
// 3;
var obj = {
    valueOf: function() {
        return [1, 2];
    },
    toString: function() {
        return 1;
    }
};
console.log(obj + ""); //'1';
// 4;
var obj = {
    valueOf: function() {
        return [1, 2];
    },
    toString: function() {
        return [1, 2, 3];
    }
};
console.log(obj + ""); // 报错 Uncaught TypeError: Cannot convert object to primitive value

拓展:

var arr = [new Object(), new Date(), new RegExp(), new String(), new Number(), new Boolean(), new Function(), new Array(), Math] console.log(arr.length) // 9
for (var i = 0; i < arr.length; i++) {
    arr[i].valueOf = function() {
        return [1, 2, 3]
    }
    arr[i].toString = function() {
        return 'toString'
    }
    console.log(arr[i] + '')
}

1、若 return [1, 2, 3]处为 return "valueof",得到的返回值是 valueof toString 7valueof 说明:其他八种复杂数据类型是先调用 valueOf 方法,时间对象是先调用 toString 方法


2、改成 return [1, 2, 3],得到的返回值是 9toString 说明:执行 valueof 后都来执行 toString


相关文章
|
3月前
|
JSON JavaScript 前端开发
JS对象和字符串的相互转换
JS对象和字符串的相互转换
40 4
|
5月前
复杂数据类型如何转变为字符串
复杂数据类型如何转变为字符串
|
5月前
|
JavaScript 安全
TypeScript类型(数字、字符串、字面量、数组、元组、枚举、对象等)
TypeScript类型(数字、字符串、字面量、数组、元组、枚举、对象等)
|
6月前
复杂的数据类型如何转成字符串!
复杂的数据类型如何转成字符串!
|
6月前
|
存储 JSON JavaScript
从复杂数据类型到字符串:JavaScript 中的转换方法
从复杂数据类型到字符串:JavaScript 中的转换方法
66 5
|
6月前
String类及相应的字符串操作方法
String类及相应的字符串操作方法
98 1
|
6月前
|
前端开发 Java Spring
基本数据类型,特殊数据类型-和字符串自动转换
基本数据类型,特殊数据类型-和字符串自动转换
68 0
|
程序员 索引
String类即字符串的相关方法
String类即字符串的相关方法
64 0
|
存储
04-数组和元祖数据类型
04-数组和元祖数据类型
70 0
|
JavaScript
js对象、数组转换字符串
js对象、数组转换字符串
132 0