关于原型链里面一些不理解的地方,求大神指点。

sunsl516 2016-04-14 08:06:54
这两天买了本js高级程序设计在看,看面向对象编程的时候看到这里有些不明白:

/*寄生组合式继承*/
function SuperType(name){
this.name=name;
this.colors=["blue","red","black"];
this.age=22;
}

SuperType.prototype.sayName=function(){
alert(this.name);
}

function SubType(name,age){
SuperType.call(this,name);
this.age=age;
}

function inheritPrototype(SuperType,SubType){
var prototype=Object(SuperType.prototype);
SubType.prototype.constructor=SubType;
SubType.prototype=prototype;
}

inheritPrototype(SuperType,SubType);

SubType.prototype.sayAge=function(){
alert(this.age);
}

for(var prop in SuperType.prototype){
alert(prop);
}

alert(SuperType.prototype==SubType.prototype);

我发现会输出sayName和sayAge,下面会输出true,也就是说inheritPrototype里面只是将SubType.prototype指向了SuperType.prototype了,我以为Object()方法会创建一个副本呢,那我想请问的问题是我直接用SubType.prototype==SuperType.prototype这行代码代替inheritPrototype方法不知可行不,其实我测试过得到的结果也是一样的,我不知道这两种做法上有没有什么区别?
...全文
91 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
fondOfJava 2016-04-14
  • 打赏
  • 举报
回复

function inheritPrototype(SuperType,SubType){
            var prototype=Object(SuperType.prototype);
            SubType.prototype.constructor=SubType;//这里的代码是否有误,个人觉得是否为prototype.constructor=SubType;?
            SubType.prototype=prototype;
        }

87,903

社区成员

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

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