<script type="text/javascript">
function MyObj(id){
this.id = id;
}
//重写toString
MyObj.prototype.toString = function(){
return "MyObj"+this.id;
};
function MyObj2(id){
this.id = id;
}
//重写toString
MyObj2.prototype.toString = function(){
return "MyObj2"+this.id;
};
alert("MyObj.prototype: "+MyObj.prototype);
//重新指定原型对象
MyObj.prototype = new MyObj2("八");
alert("MyObj.prototype: "+MyObj.prototype);
</script>
第一个alert弹出"MyObj.prototype: MyObjundefined"
第二个alert弹出"MyObj.prototype: MyObj2八"
请问javascript prototype的方法和属性调用顺序?是不是“对象实例-->原型-->父原型”?
的。但是你的调用方法存在一些问题。
通俗点讲:第一个alert,MyObj.prototype当时是没有可以转为String类型的值的,所以得到undefined,然后undefined专为"undefined"字符串输出。
第2个alert以前你将 MyObj的原型转为了MyObj2的一个实例的结果,这个实例的结果就是MyObj2.prototype.toString(因为你之前定义了),所以 new MyObj2("八")="MyObj2"+"八"。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。