Javascript 将属性设置为JS function';s原型

Javascript 将属性设置为JS function';s原型,javascript,prototype-chain,Javascript,Prototype Chain,我创建函数并在其原型中添加属性,如下所示 let F = function(){} F.prototype.foo = 'abc' 我的问题是为什么在使用F.foo时它会返回undefined? 但是用了这个 设F=function(){} F.prototype.foo='abc' 设fn=new F() console.log(fn.foo)//返回'abc'foo是prototype对象的一个属性,实例在实例化时具有其内部原型。这与构造函数不同,后者完全不同 调用构造函数时,会得到一

我创建函数并在其原型中添加属性,如下所示

let F = function(){}
 F.prototype.foo = 'abc'
我的问题是为什么在使用F.foo时它会返回undefined? 但是用了这个

设F=function(){}
F.prototype.foo='abc'
设fn=new F()

console.log(fn.foo)//返回'abc'
foo
是prototype对象的一个属性,实例在实例化时具有其内部原型。这与构造函数不同,后者完全不同

调用构造函数时,会得到一个实例作为回报,但构造函数不是实例或实例的原型

这就是原型链在此处的工作方式:

Object.prototype -> Function.prototype -> F

Object.prototype -> F.prototype -> fn
当您在
F.prototype
上设置某个对象时,它不在F的内部原型链上-它只在实例的原型链上

如果在
Object.prototype
上设置了某些内容,则
F
fn
实例都将继承它:

设F=function(){}
Object.prototype.foo='abc'
设fn=new F()
console.log(fn.foo)//返回'abc'

console.log(F.foo)F.prototype.foo
F.foo
不同。使用
fn=new F()
创建F时,创建的对象
fn
具有其原型的属性
F.prototype