各位大虾帮帮忙:关于用js的原型链实现继承的问题

acalanatha 2007-04-11 04:06:12
我使用原型链方式实现两层继承,代码如下:
function prop()
{
var t=new Three();
document.writeln(t.num);
}
function Three()
{}
Three.prototype=new Two();

function Two()
{}
Two.prototype=new One();

function One()
{}
One.prototype.num=123;
调用prop()方法,为什么结果会是undefined呢?
可是我把One、Two、Three三个函数的顺序倒过来写,如下:
function prop()
{
var t=new Three();
document.writeln(t.num);
}

function One()
{}
One.prototype.num=123;

function Two()
{}
Two.prototype=new One();

function Three()
{}
Three.prototype=new Two();
为什么这样写就对了呢?输出结果为123。
据我所知,js中的函数都可以先调用后定义,可为什么会出现上面情况呢?
...全文
146 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
adverse 2007-04-11
  • 打赏
  • 举报
回复
代码是从上到下顺序解释执行的,在第一种方法里:Three.prototype=new Two();时,Two还没有被解释到,所以,就认为它是空,以下都是如此。
dh20156 2007-04-11
  • 打赏
  • 举报
回复
同意hb看法!执行顺序很重要!
hbhbhbhbhb1021 2007-04-11
  • 打赏
  • 举报
回复
JS是解释型语言,要看顺序的,上面的在调他原型的时候他还不存在,所以为空

87,992

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧