我在Javascript中学习原型,并获得了很多关于他们的用法。但我对以下内容感到困惑,认为它没有起作用。
function Employee(name)
{
this.name = name;
}
Employee.prototype.code = "SIMPLE";
Employee.prototype.getName = function()
{
return this.name;
}
var a = new Employee("Manish");
var b = new Employee("Vikash");
a.__proto__.code // SIMPLE
a.__proto__.getName() // Undefined
当__proto__
返回true时,为什么我们无法访问a.__proto__ == Employee.prototype
上的某个功能。
答案 0 :(得分:2)
上下文(又名this)是在调用函数时在javascript中确定的。所以这里:
a.__proto__.getName()
上下文是 a .__ proto __ ,并且没有 name 属性,因此它返回undefined。这里:
a.getName()
你用上下文 a 调用getName,并且a有一个名字......
答案 1 :(得分:0)
您可以访问__proto__
对象上的功能,但是您会因为在通话时丢失对this
的绑定而获得此行为这样这个功能就没有回归你所期望的。 this
的值由调用上下文确定。出于试验目的,您可以尝试像这样添加绑定:
a.__proto__.getName.bind(a)()
// Manish
// or
a.__proto__.getName.call(b)
// Vikash