Javascript 是遗传吗?有人能解释吗?

Javascript 是遗传吗?有人能解释吗?,javascript,constructor,prototypal-inheritance,Javascript,Constructor,Prototypal Inheritance,我有两个目标 function Obj1(name){ this.prototype={}; this.prototype.Name=name; this.prototype.getName=function(){ alert(this.Name); }; } function Obj2(name){ var x=new Obj1(name); x.prototype=Object.defineProperties(x,{ myFunc

我有两个目标

function Obj1(name){
   this.prototype={};
   this.prototype.Name=name;
   this.prototype.getName=function(){
        alert(this.Name); 
   };
}
function Obj2(name){
   var x=new Obj1(name);
   x.prototype=Object.defineProperties(x,{
   myFunc:{
       value:function(){
       alert("I am myFunc");
       }
   }
   });
   return x;
}
var y=new Obj1("Your Name");
var z=new Obj2("Her Name");
y.getName();
z.getName();//works fine in this case
当我在使用以下构造函数创建
Obj2
时调用
z.getName()
时,会导致一个错误,说
“z没有方法getName()”

当我试着这样做的时候,我得到了同样的错误

    function Obj2(name){
   var x=new Obj(name);
   x.prototype={};
   x.prototype=Object.defineProperties(x.prototype,{
   myFunc:{
       value:function(){
       alert("I am myFunc");
       }
   }
   });
   return x;
}

发生了什么我完全搞不清楚为什么编写构造函数的第二和第三种方法不继承方法
getName()
,是构造函数继承或创建另一个
x
副本的第一种方法,该副本在
x.prototype
上具有新定义的属性?

我不相信这是您拥有的代码。我已经得到了
这个。对于第一个示例(在
Obj1
中),原型
未定义的
。(除了
Obj2
中的语法错误之外)。看起来您在这里错误地混合了一堆概念……下面是一个关于如何在基于函数的构造对象上使用原型以及JavaScript如何“从父对象继承”原型链的示例works@FelixKling修复了语法错误,感谢您指出outprototype不能用于实例,如果必须,请使用proto(proto前后两个下划线),但最好使用Obj1.prototype在函数体外部定义“静态”属性。请阅读我之前发布的链接。
    function Obj2(name){
   var x=new Obj(name);
   x.prototype={};
   x.prototype=Object.defineProperties(x.prototype,{
   myFunc:{
       value:function(){
       alert("I am myFunc");
       }
   }
   });
   return x;
}