0

给定一个javascript函数

var f = function();

据我了解,我称之为Object.getProtoypeOf(f)“f的原型”。

什么是正确的术语f.prototype

“使用 f 作为构造函数构造的 Prototype 对象将得到”听起来有点冗长;)

4

1 回答 1

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.prototypeundefined。函数有一个原型对象,当该函数用作构造函数时,实例可以使用它的属性,但实例本身没有prototype属性。

Object.getPrototypeOf(matt)找到真正的原型。如您所见,这与Person.prototype. 它允许您获取原型,而无需引用构造函数。

最后,如果我们尝试,Object.getPrototypeOf(Person)我们会得到一些奇怪的东西。我们的构造函数,毕竟是一个函数。将您创建的函数视为某些Function构造函数的实例,并具有自己的原型。因此,当您执行此操作时,您正在获取所有函数的原型对象。

于 2013-04-10T19:06:37.340 回答