开发者社区> 问答> 正文

javascript prototype的方法和属性调用顺序

<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的方法和属性调用顺序?是不是“对象实例-->原型-->父原型”?

展开
收起
a123456678 2016-07-15 11:52:32 2514 0
1 条回答
写回答
取消 提交回答
  • 的。但是你的调用方法存在一些问题。

    通俗点讲:第一个alert,MyObj.prototype当时是没有可以转为String类型的值的,所以得到undefined,然后undefined专为"undefined"字符串输出。

    第2个alert以前你将 MyObj的原型转为了MyObj2的一个实例的结果,这个实例的结果就是MyObj2.prototype.toString(因为你之前定义了),所以 new MyObj2("八")="MyObj2"+"八"。

    2019-07-17 19:56:52
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载