一 代码
讲到打印对象时,我们经常会返回一个字符串,这是因为toString的返回值决定的。toString()被定义在对象的原型的原型当中,所以,当我们想要改变打印对象的返回值时,我们可以在对象的原型的属性添加一个toString方法,这样优先级比对象的原型的原型的方法高,就能够改变打印对象时的返回值。
具体看代码,很简单。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
function Person(name , age , gender){
this.name = name;
this.age = age;
this.gender = gender;
}
// 2. 修改Person原型的toString
Person.prototype.toString = function(){
return "Person[name="+this.name+",age="+this.age+",gender="+this.gender+"]";
};
//创建一个Person实例
var per = new Person("孙悟空",18,"男");
var per2 = new Person("猪八戒",28,"男");
// 1. 当我们直接在页面中打印一个对象时,事件上是输出的对象的toString()方法的返回值
// 如果我们希望在输出对象时不输出[object Object],可以为对象添加一个toString()方法
//Person[name=孙悟空,age=18,gender=男]
/*per.toString = function(){
return "Person[name="+this.name+",age="+this.age+",gender="+this.gender+"]";
};*/
var result = per.toString();
//console.log("result = " + result);
console.log(per.__proto__.__proto__.hasOwnProperty("toString")); // true
console.log(per2);
console.log(per);
</script>
</head>
<body>
</body>
</html>
结果: