2016-10-20 6 views
0

Ich benutze unten Code.Object.create() kann nicht auf Variable innerhalb der Funktion zugreifen

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.

können einige mir helfen, zu verstehen, warum statt manish1 Objekt erstellen ist nicht definiert zu drucken.

+1

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

Antwort

2

new X() erstellt ein neues Objekt mit Konstruktor X und Prototyp X.prototype. Object.create(X) erstellt ein neues Objekt mit dem Prototyp X (und daher Konstruktor X.constructor).

So müssen Sie es mit dem Prototyp nennen Sie wollen:

var man2 = Object.create(emp.prototype); 
man2.empname = "manish2"; 
console.log (man2.getName()); // prints manish2 
Verwandte Themen