所有js对象都从Object.prototype继承属性。这些继承属性主要是方法。比如:
hasOwnProperty()
propertyIsEnumerable()
还有定义在Object构造函数上的静态方法,比如:
Object.create()
Object.keys()
此次主要介绍的是Object.prototype上定义的几个通用方法。
1. toString()方法
该方法不接收参数,返回调用它的对象的值的字符串。由于这个默认方法不会显示太有用的信息,很多累都会重新定义自己的toString()方法。例如,把数组转为字符串时,会得到数组元素的一个列表,每个元素也都会转为字符串;。把函数转为字符串时,会得到函数的源代码。
// 定义自己的toString()方法
let point ={
x:1,
y:2,
toString:function(){return `(${this.x}, ${this.y})`;}
}
console.log(String(point)); //(1,2)
console.log(point.toString()) //(1,2)
2. toLocaleString()方法
这个方法用于返回对象的本地化字符串表示。
let point ={
x:1,
y:2,
u:1000,
v:2000,
toString:function(){return `(${this.x}, ${this.y})`;},
toLocaleString:function(){
return `(${this.u.toLocaleString()},${this.v.toLocaleString()})`;
}
}
console.log(String(point));
console.log(point.toString());
console.log(point.toLocaleString()); //(1,000,2,000)千分位分隔符
3. valueOf()方法
当js需要把对象转换为某些非字符串原始值时被调用。
4. toJSON()方法
Object.prototype上并未定义toJSON()方法,但JSON.stringify()会从序列化的对象上寻找toJSON()方法。如果序列化的对象上存在这个方法,就会调用它,然后序列化该方法的返回值,而不是原始对象。Date类定义了自己的toJSON()方法,返回一个表示日期的序列化字符串。