在以下代码中,构造函数原型上定义的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: undefined
但emp1.age
已初始化为48
,因为emp1.age
返回48
所以为什么getAge()
失败得到emp1.age
值。
答案 0 :(得分:0)
getName
是一个函数(try typeof emp1.getName == 'function'
),它是一种特殊的对象(几乎所有东西都是javascript上的一个对象)。因此,它也可以有自己的属性。