请有人解释为什么b.prototype.prototype undefined(不是“Object {}”)?
a = function(){}
function b(){}
console.log(a.prototype) //Object {}
console.log(b.prototype) //b {}
console.log(a.prototype.prototype) //undefined
console.log(b.prototype.prototype) //undefined
a>对象{}> undefined - 好的
b> b {}> ???
答案 0 :(得分:1)
主要是,您似乎对b
的原型似乎再次b
这一事实感到困惑 - 它不是。两个原型都是对象,因此没有自己的原型。 " toString()"的实现构造原型的方法(或者您用来显示此对象的特定控制台)只是特定于实现的,在这种情况下,它在输出中包含函数名称(如果有的话)。您可能会在其他浏览器中获得不同的输出,例如IE。
答案 1 :(得分:0)
未定义,因为您尚未为属性prototype
分配任何内容。
a.prototype.prototype=a.prototype;
console.log(a.prototype.prototype)//{}
答案 2 :(得分:0)
为什么要定义b.prototype.prototype
?
var a = function () {};
a.prototype; // {}
function b () {}
b.prototype; // {}
两种原型都没有称为原型的属性......
因此,要求对象的非现有属性会导致undefined
。
控制台正在调用b.prototype
"b{}"
这一事实并未改变任何内容。它只是说它是named-funciton b
的原型对象,而不是匿名函数,就像分配给a
的函数一样。
它仍然是一个空物体,没有原型。