给定一个javascript函数
var f = function();
据我了解,我称之为Object.getProtoypeOf(f)
“f的原型”。
什么是正确的术语f.prototype
?
“使用 f 作为构造函数构造的 Prototype 对象将得到”听起来有点冗长;)
给定一个javascript函数
var f = function();
据我了解,我称之为Object.getProtoypeOf(f)
“f的原型”。
什么是正确的术语f.prototype
?
“使用 f 作为构造函数构造的 Prototype 对象将得到”听起来有点冗长;)
在这里查看: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
构造函数的实例,并具有自己的原型。因此,当您执行此操作时,您正在获取所有函数的原型对象。