JavaScript中原型对象和继承的问题

zzh1918 2017-10-15 11:15:39
function Test1(){
Test1.prototype.name="zhang";
}
function Test2(){
}

Test2.prototype=Test1.prototype;
var obj2=new Test2();

console.log(obj2.name);
console.log(obj2.constructor);

将Test2的对象原型指向Test1的对象原型,然后创建Test2的对象实例,为什么能访问constructor,但不能访问name?而下面的又能访问

function Test1(){
}
function Test2(){
}
Test1.prototype={
name:"zhang"
};

Test2.prototype=Test1.prototype;
var obj2=new Test2();
console.log(obj2.name);
console.log(obj2.constructor);
...全文
201 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
似梦飞花 2017-10-15
  • 打赏
  • 举报
回复
因为第一个只有执行了Test1方法后才会在Test1的原型上加上name属性啊 但是你没执行过Test1
天际的海浪 2017-10-15
  • 打赏
  • 举报
回复
你在Test1构造函数中为原型添加属性,就要调用Test1函数才能执行 Test1.prototype.name="zhang"; 另外,对象继承不能 Test2.prototype=Test1.prototype; 这样弄的, 你这样后面对子类原型添加属性(方法)时会影响到父类的原型。 应该是 Test2.prototype = Object.create(Test1.prototype); 用Test1原型对象及其属性去创建一个新的对象。

87,989

社区成员

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

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