2016-10-20 15 views
0

私は以下のコードを使用しています。Object.create()関数内で変数にアクセスできません

var emp = function employee(name, sal) { 
 
    this.empname = name; 
 
    this.sal = sal; 
 
} 
 

 
emp.prototype.getName = function() { 
 
    return this.empname 
 
}; 
 

 
var man = new emp("manish", 100); 
 
console.log(man.getName()); //prints manish 
 

 
var man1 = Object.create(emp); 
 
man1.empname = "manish1"; 
 
console.log(man1.prototype.getName()); //prints undefined.

いくつかのオブジェクトが代わりにmanish1未定義の印刷された作成、なぜ私が理解するのに役立ちます。

+1

:http://stackoverflow.com/questions/3079887/javascript-inheritance-with-object-create – Rajesh

答えて

2

new X()は、コンストラクタXとプロトタイプX.prototypeで新しいオブジェクトを作成します。 Object.create(X)は、プロトタイプX(したがって、コンストラクタX.constructor)で新しいオブジェクトを作成します。

だから、あなたが欲しいプロトタイプとそれを呼び出す必要があります:これは役立つかもしれ

var man2 = Object.create(emp.prototype); 
man2.empname = "manish2"; 
console.log (man2.getName()); // prints manish2 
関連する問題