为什么父类属性在javascript中显示未定义

时间:2018-07-21 13:17:29

标签: javascript

function Abc(){
  this.a ="naveen"
}

Abc.prototype.getName =function () {
  return this.a;
}

function Pqr() {
  this.b ="bn"
}

Pqr.prototype = Object.create(Abc.prototype);
Pqr.prototype.constructor = Abc;

var a = new Pqr();
console.log(a.a);
console.log(a.getName());
console.log(JSON.stringify(a));

我正在尝试使用object.create将属性从父级继承到子级,但这表明原因未定?

输出原因?

undefined
undefined
{"b":"bn"}

1 个答案:

答案 0 :(得分:0)

您的代码实际上是将功能Abc分配给constructor的新功能Pqr。此constructor函数不是Pqr的实际构造函数,这就是从未调用this.a = "naveen"的原因(因为它不是Pqr的构造函数,所以没有被隐式调用)。为此,您需要在访问对象constructor的值之前调用a.constructor();之类的a函数。

function Abc(){
  this.a ="naveen"
}

Abc.prototype.getName =function () {
  return this.a;
}

function Pqr() {
  this.b ="bn"
}

Pqr.prototype = Object.create(Abc.prototype);
Pqr.prototype.constructor = Abc;

var a = new Pqr();
a.constructor();
console.log(a);
console.log(a.getName());
console.log(JSON.stringify(a));