函数对象原型

Vig*_*esh 11 javascript prototype

function funcObj() { } 
funcObj.prototype.greet = "hello";
console.log(funcObj.greet) // undefined ???
console.log(funcObj.prototype.greet) // hello

var obj = new funcObj();
console.log(obj.greet); // hello
Run Code Online (Sandbox Code Playgroud)

根据我对原型的理解.如果访问对象的成员,则当该对象中不可用时,它将从原型对象获取它.

我的问题是:

因为Javascript中的函数是对象的原因funcObj.greet- > undefined,但是obj.greet- >你好?

sky*_*ack 2

原型只不过是实例从中继承属性的对象。

因此,funcObj是另一个原型( 的原型Function)的实例,它继承了该原型的所有属性。此外,它本身还有一个prototype,您可以在其上绑定任何您想要的内容,并且一旦您调用它来构造 的新实例funcObj(即,当您与new关键工作一起调用它时, as new funcObj()),就会使用该原型。

因此,funcObj没有名为 的成员是完全正常的greet,而其实例却有该成员。