发布网友 发布时间:2022-04-21 19:30
共3个回答
热心网友 时间:2022-04-24 15:16
toString()这个方法,是在对象做类型转换成字符串的时候,自动调用的.比如alert(window),就等于alert(window.toString());,那么,alert(window.toString),你就可以看到,toString是怎么定义的了。
在解释你的代码,既然你使用了重写toString,那么,正确的使用方法,应该是:
alert("MyObj.prototype:"+obj1); 这样,就能够得到你想要的结果了 MyObj.prototype:MyObj1。
至于为什么,同样,咱们也alert(MyObj.prototype.toString);来看看,看到了么?就是你上面定义的方法。也就是说,alert(MyObj.prototype);就相当于alert(MyObj.prototype.toString());这样调用,没有初始化出一个MyObj对象,也就是没new MyObj();而是直接调用了你在上面定义的一个普通的函数而已,不是一个对象的方法。
表达能力有限,希望你能够看懂。
热心网友 时间:2022-04-24 16:34
return "MyObj"+this.id;
MyObj undefined,
undefined是this.id追问确如你所说undefined是this.id ,使用
MyObj.prototype.toString.call(obj1),this.id的值就能为1了,谢谢!
热心网友 时间:2022-04-24 18:09
function MyObj(id){
this.id = id;
this.toString = function(){return "MyObj"+this.id;};
}
var obj1 = new MyObj(1);
alert("MyObj.prototype:"+obj1.toString());