私は2つのオブジェクトを持っています
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
z.getName()
次のコンストラクター関数を使用して作成中に呼び出すObj2
と、次のエラーが発生します"z has no method getName()"
function Obj2(name){
//var x=new Obj(name);
this.prototype=new Obj(name);
this.prototype=Object.defineProperties(this.prototype,{
myFunc:{
value:function(){
alert("I am myFunc");
}
}
});
//return x;
}
この方法で実行しようとすると、同じエラーが発生します
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;
}
何が起こっているのか私は完全に混乱しています.2番目と3番目の方法でメソッドをObj2
継承するコンストラクタを作成しないのはなぜですか?getName()
x
x.prototype