使用对象的toString函数把对象转化为字符串。
// plain objectvar obj = {}
obj.toString() // 返回"[object Object]" // 基本数据封装类
var num = new Number(2.2)
num.toString() // 返回"2.2" // 数组
var arr = [1,2,3]
arr.toString() // 返回"1,2,3" // 正则对象
var reg = new RegExp('\\d')
reg.toString() // 返回"/\d/" // 自定义对象
function Person(name, age) {
this.name = name
this.age = age
}
Person.prototype.toString = function () {
return 'name is ' + this.name + 'and age is ' + this.age
}
var p = new Person('Scott', 31)
p.toString() // 返回"name is Scott and age is 31"
JSON.stringify
使用json序列化的方式把对象转换为字符串,该方式会把一个对象中所有标记为
enumerable的属性序列化为json格式的字符串。
// plain objectvar obj = {name: 'Scott', age: 31}
JSON.stringify(obj) // 返回"{"name":"Scott","age":31}" // 基本数据封装类
var num = new Number(2.2)
JSON.stringify(num) // 返回"2.2" // 数组
var arr = [1,2,3]
JSON.stringify(arr) // 返回"[1,2,3]" // 自定义类型
function Person(name, age, maritalStatus) {
this.name = name
this.age = age
// 由于婚姻状况是隐私的属性,不希望序列化字符串的时候暴露给他人,因此这里设置属性为不可枚举的
Object.defineProperty(this, 'maritalStatus', {
enumerable: false,
configurable: false,
writable: true,
value: maritalState || 'unknown'
})
this.maritalStatus = maritalStatus
}
var p = new Person('Scott', 31, 'married')
// 序列化的时候是没有maritalStatus的
JSON.stringify(p) // 返回"{"name":"Scott","age":31}"
// 但是maritalStatus确实真实存在于对象中的
p.maritalStatus // 返回"married"
js数字转换成字符串将字符串转换成数字,得用到String类的toString方法
举例:
var i = 10
var s = i.toString()
alert(typeof s)//将输出 String
js数字与字符串的区别
js的数字的加法与字符串的连接都是 + 符号, 所以究竟是加还是字符串的连接就取决与变量的类型。
举例:
var a = 'abc' + 'xyz'//a的值为:abcxyz,字符串与字符串是连接
var a = 10 + 5//a的值为:15,数字是加
var a = 'abc' + 10//a的值为:abc10,字符串与数字,自动将10转换成字符串了
var a = 'abc' + 10 + 20 + 'cd'//a的值为:abc1020cd
var a = 10 + 20 + 'abc' + 'cd'//a的值为:30abccd,可以数字加的先数字加,然后再连接