在构造函数的原型方法中定义的子方法原型返回`undefined`,用于通过它访问的对象属性。为什么

时间:2017-06-03 14:21:39

标签: javascript prototype javascript-objects

在以下代码中,构造函数原型上定义的getName()方法在其上定义了子方法getAge()(因为它是function object,我认为是这样的)但是typeof emp1.getName == "object"会返回false,但emp1.getName.hasOwnProperty('getAge')会返回true

var fname = "Ram";
var lname = "Singh";
var age = "48";

function employee(fname, lname, age) {
  this.fname = fname;
  this.lname = lname;
  this.age = age;
}
employee.prototype.getName = function () { return "Name is: " + this.fname + " " + this.lname; },
employee.prototype.getName.getAge = "function () { return + this.age; }"

var emp1 = new employee(fname, lname, age);
typeof emp1.getName == "object";        //returns false
emp1.getName.hasOwnProperty('getAge');   //returns true

如果getName不是某个对象,那么它如何拥有子属性getAge作为其自己的属性。

此外,emp1.getName.getAge()返回Age is: undefinedemp1.age已初始化为48,因为emp1.age返回48所以为什么getAge()失败得到emp1.age值。

1 个答案:

答案 0 :(得分:0)

getName是一个函数(try typeof emp1.getName == 'function'),它是一种特殊的对象(几乎所有东西都是javascript上的一个对象)。因此,它也可以有自己的属性。