【发布时间】:2012-09-21 14:57:51
【问题描述】:
对于下面的代码,我想知道为什么Object.getPrototypeOf(person) 可以工作,而person.getPrototypeOf(person) 不能工作?我认为规则是:如果对象没有这样的属性或方法,它会沿着原型链尝试获取它,并在this上调用它(例如Animal.getName.call(this),其中this是woofie 对象的上下文)。那么在这种情况下,person.getPrototypeOf(person) 应该变成 Object.getPrototypeOf.call(person, person) 并且也应该工作?
function Person(name) {
this.name = name;
}
var person = new Person("Ang Lee")
console.log("the prototype of person is", Object.getPrototypeOf(person));
更新:对于说getPrototypeOf 是静态方法的答案,这是否意味着:
function Person(name) {
this.name = name;
this.foo = function() { ... }
}
Person.bar = function() { ... }
foo 是“链中的”,可以被任何继承的对象调用,而bar 不是,bar 就像getPrototypeOf,这是一个静态方法?
【问题讨论】:
-
请注意
typeof Object == 'function' -
它是
Object的静态方法,因此不能在Object实例上调用。
标签: javascript prototype