Javascript 为什么这个属性没有为函数类定义,而是为同一类的实例定义?
我将介绍以下示例,这些示例取自: 将生成以下输出:Javascript 为什么这个属性没有为函数类定义,而是为同一类的实例定义?,javascript,Javascript,我将介绍以下示例,这些示例取自: 将生成以下输出: doSomeInstancing.prop: some value doSomeInstancing.foo: bar doSomething.prop: undefined doSomething.foo: undefined doSomething.prototype.prop: undefined doSomething.prototype.foo: bar 我不明白为什
doSomeInstancing.prop: some value
doSomeInstancing.foo: bar
doSomething.prop: undefined
doSomething.foo: undefined
doSomething.prototype.prop: undefined
doSomething.prototype.foo: bar
我不明白为什么doSomething.foo没有定义。foo被添加到doSomething的原型中,如果解释器在对象的实例中找不到它,是否应该在那里找到它?prototype属性有点混乱。它不是指当前对象的内部原型,而是指当函数具有
prototype
属性时,实例将在函数上具有.prototype
对象的内部原型
函数本身(此处,doSomething
)不在dosomeinstance
的原型链上的任何位置。这里是原型链:
<- here means: "has an internal prototype of"
doSomething <- Function.prototype <- Object.prototype
doSomeInstancing <- doSomething.prototype <- Object.prototype
不知道为什么大多数教程似乎都在掩盖这一点,除非它是这样拼写的,否则它是非常混乱的。我仍在思考这个概念,但你的答案比我发现的任何其他答案都更有意义。谢谢
<- here means: "has an internal prototype of"
doSomething <- Function.prototype <- Object.prototype
doSomeInstancing <- doSomething.prototype <- Object.prototype