给出一个javascript函数
var f = function();
据我所知,我会打电话给Object.getProtoypeOf(f)
“f的原型”。
f.prototype
的正确用语是什么?
“使用f作为构造函数构造的Prototype对象将”听起来有点冗长;“
答案 0 :(得分:0)
在此处查看:http://jsfiddle.net/UCmW8/
var Person = function(name) {
this.name = name;
}
Person.prototype.sayHi = function() {
alert(this.name + ' says hi!');
};
var matt = new Person('Matt');
matt.sayHi() // alerts 'Matt says hi!'
console.log('matt.prototype', matt.prototype);
console.log('Object.getPrototypeOf(matt)', Object.getPrototypeOf(matt));
console.log('Person.prototype', Person.prototype);
console.log('Object.getPrototypeOf(Person)', Object.getPrototypeOf(Person));
这会产生什么?
首先matt.prototype
是undefined
。函数有一个原型对象,当该函数用作构造函数时,实例可以使用它的属性,但实例本身没有prototype
属性。
Object.getPrototypeOf(matt)
找到真正的原型。正如您所看到的,这与Person.prototype
相同。它允许您获取原型,而无需引用构造函数。
最后,如果我们尝试Object.getPrototypeOf(Person)
,我们会得到一些奇怪的东西。我们的构造函数毕竟是一个函数。将您创建的函数视为某些Function
构造函数的实例,并使用它自己的原型。因此,当您执行此操作时,您将获取所有函数的原型对象。