美文网首页
javascript学习笔记--修改原型对象中的toString

javascript学习笔记--修改原型对象中的toString

作者: 持续5年输出bug | 来源:发表于2018-10-10 08:18 被阅读0次
    function Fun (name,age) {
        this.name=name;
        this.age=age;
    }
  var fun2= new Fun("tom",17);
console.log(fun2)  //Fun {name: "tom", age: 17}

以下代码块中 console.log(fun2.toString)

   function Fun (name,age) {
        this.name=name;
        this.age=age;
    }
var fun2= new Fun("tom",17);
console.log(fun2.toString)   //[object Object]

检查两个代码块打印的东西是否相等,结果返回ture,

console.log(fun2.toString()==fun2);

所以,当在页面中直接打印一个对象时,实际上是打印该对象的toString()方法的返回值;而toString()来自于Object原型对象,

console.log(fun2.__proto__.hasOwnProperty("toString"));  //false
console.log(fun2.__proto__.__proto__.hasOwnProperty("toString")); //ture,

即toString()方法在原型的原型里,可以修改原型对象的返回值。

    function Fun (name,age) {
        this.name=name;
        this.age=age;
    }
var fun2= new Fun("tom",17);
//直接给toString方法修改一个返回值
fun2.toString=function () {
    return "我是被修改的toString()方法的返回值"
}
console.log(fun2.toString());

给多个实例修改toString,即修改Fun原型的toString:

    function Fun (name,age) {
        this.name=name;
        this.age=age;
    }
var fun2= new Fun("tom",17);
var fun3= new Fun("marry",12);

Fun.prototype.toString=function(){
    return "Fun[name="+this.name+",age="+this.age+"]" 
}

// console.log(fun2.toString()==fun2); 
console.log(fun2);
console.log(fun2.toString());//Fun {name: "tom", age: 17}

console.log(fun3);
console.log(fun3.toString());//Fun[name=marry,age=12]

相关文章

网友评论

      本文标题:javascript学习笔记--修改原型对象中的toString

      本文链接:https://www.haomeiwen.com/subject/jvnsaftx.html