我如何正确调用'f.prototype'?

时间:2013-04-10 18:49:42

标签: javascript nomenclature

给出一个javascript函数

var f = function();

据我所知,我会打电话给Object.getProtoypeOf(f)“f的原型”。

f.prototype的正确用语是什么?

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

1 个答案:

答案 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));

这会产生什么?

prototypes output

首先matt.prototypeundefined。函数有一个原型对象,当该函数用作构造函数时,实例可以使用它的属性,但实例本身没有prototype属性。

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

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