为什么这在JavaScript中计算为未定义?
为什么最后一行在JavaScript中计算为未定义为什么这在JavaScript中计算为未定义?,javascript,prototype,Javascript,Prototype,为什么最后一行在JavaScript中计算为未定义 function Boat() {} var myBoat = new Boat(); console.log(Boat.prototype); //Boat(){} console.log(myBoat.__proto__); //Boat(){} console.log(myBoat.__proto__.prototype); //undefined - why is this not Boat(){} 这是因为myBoat.\u
function Boat() {}
var myBoat = new Boat();
console.log(Boat.prototype); //Boat(){}
console.log(myBoat.__proto__); //Boat(){}
console.log(myBoat.__proto__.prototype); //undefined - why is this not Boat(){}
这是因为
myBoat.\uuuu proto\uuuu
不是一个函数,而是一个对象,因此它不包含prototype
属性。你可以试试这个:
console.log(myBoat.__proto__.constructor.prototype);
这是因为
myBoat.\uuuu proto\uuuu
不是一个函数,而是一个对象,因此它不包含prototype
属性。你可以试试这个:
console.log(myBoat.__proto__.constructor.prototype);
\uuuu proto\uuu
属性引用实例构造函数的原型。因此,第二个示例记录的对象与第一个完全相同:
Boat.prototype === myBoat.__proto__;
船的原型。原型
是未定义的
,因为船。原型
不是一个函数。事实上,它实际上是对象的一个实例,因此:
Boat.prototype.__proto__ === Object.prototype;
进而:
myBoat.__proto__.__proto__ === Object.prototype;
旁注-不推荐使用\uuu proto\uu
属性。如有可能,应改为使用:
Boat.prototype === Object.getPrototypeOf(myBoat); // Equivalent to 1st example
\uuuu proto\uuu
属性引用实例构造函数的原型。因此,第二个示例记录的对象与第一个完全相同:
Boat.prototype === myBoat.__proto__;
船的原型。原型
是未定义的
,因为船。原型
不是一个函数。事实上,它实际上是对象的一个实例,因此:
Boat.prototype.__proto__ === Object.prototype;
进而:
myBoat.__proto__.__proto__ === Object.prototype;
旁注-不推荐使用\uuu proto\uu
属性。如有可能,应改为使用:
Boat.prototype === Object.getPrototypeOf(myBoat); // Equivalent to 1st example
每个对象都有一个原型,但prototype
属性仅适用于函数或函数对象。否则,可以在除IE之外的所有浏览器中使用\uuuu proto\uuu
标识符访问对象的原型
如果\uuuu proto\uuuu
不可用,可以从构造函数属性中获取原型,如myBoat.constructor.prototype
每个对象都有一个原型,但prototype
属性仅适用于函数或函数对象。否则,可以在除IE之外的所有浏览器中使用\uuuu proto\uuu
标识符访问对象的原型
如果\uuuu proto\uuuu
不可用,可以从构造函数属性中获取原型,如myBoat.constructor.prototype
您是否注意到myBoat.prototype
也是未定义的
?您是否注意到myBoat.prototype
也是未定义的
?@cookiemonster-它指的是内部[[prototype]]
对象的属性,在本例中是构造函数的原型(如myBoat.\uuuu proto\uuuu==Boat.prototype
@CookieMoster-它指的是对象的内部[[prototype]]
属性,在本例中是构造函数的原型(如myBoat.\uuuu proto\uuuu===Boat.prototype所示
)。