Object.create()无法访问函数内部的变量

时间:2016-10-20 09:51:04

标签: javascript

我正在使用以下代码。

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.

有些人可以帮助我理解为什么对象创建是打印undefined而不是manish1。

1 个答案:

答案 0 :(得分: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