1

请有人解释为什么 b.prototype.prototype undefined (not "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 > 对象{} > 未定义 - 好的

b > b{} > ???

4

3 回答 3

1

主要是,您似乎对原型b似乎b再次出现的事实感到困惑 - 但事实并非如此。两个原型都是对象,因此它们自己没有原型。构造原型的“toString()”方法(或您使用的任何特定控制台用于显示此对象)的实现只是实现特定的,在这种情况下,它包括函数名称(如果有的话)在输出中。您可能会在不同的浏览器(例如 IE)中得到不同的输出。

于 2013-03-16T07:58:09.633 回答
0

它是未定义的,因为您没有为该属性分配任何东西,prototype也没有创建它。

a.prototype.prototype=a.prototype;
console.log(a.prototype.prototype)//{}
于 2013-03-16T07:40:45.347 回答
0

为什么会b.prototype.prototype被定义?

var a = function () {};

a.prototype; // {}

function b () {}

b.prototype; // {}

两个原型都没有称为原型的属性......
因此,要求对象的不存在属性会导致undefined.

控制台正在调用的事实b.prototype "b{}"并没有改变任何东西。只是说它是 named-funciton 的原型对象b,而不是像分配给的匿名函数a

它仍然是一个空对象,没有原型。

于 2013-03-16T07:42:45.680 回答