开发者问题收集

空对象原型未定义

2014-11-18
899

(我是 JavaScript 新手)如果所有对象都从原型继承其属性,并且默认对象是 Object,那么为什么以下脚本在两种情况下都会返回 undefined(我期望的是“Object”)?

obj1 = {}; //empty object
obj2 = new Object();
console.log(obj1.prototype);
console.log(obj2.prototype);

如果这是一个愚蠢的问题,请原谅我!

2个回答

.prototype 不是活动对象的属性,因此不存在,因此会报告 undefined.prototype 属性位于构造函数上,在本例中为 Object.prototype 。对于现代浏览器中的给定对象,您可以使用以下命令获取活动原型:

var obj1 = {}; 
var p = Object.getPrototypeOf(obj1);

获取原型的非标准且现已弃用的方法是:

var obj1 = {}; 
var p = obj1.__proto__;
jfriend00
2014-11-18

在 JavaScript 的原型继承中,您有 构造函数 实例
构造函数(例如 Object )是您可以找到 .prototype 链的地方。
但在实例上,原型链实际上不可访问。

Scott Rippey
2014-11-18