var protoRabbit = {size: "small"};
var fastRabbit = Object.create(protoRabbit);
console.log(Object.getPrototypeOf(fastRabbit));
上面的代码打印:为什么getPrototypeOf()在JavaScript中返回不正确的构造函数?
对象{大小: “小”}
不应该在该打印protoRabbit {大小: “小”}呢?我的理解中缺少什么?
var protoRabbit = {size: "small"};
var fastRabbit = Object.create(protoRabbit);
console.log(Object.getPrototypeOf(fastRabbit));
上面的代码打印:为什么getPrototypeOf()在JavaScript中返回不正确的构造函数?
对象{大小: “小”}
不应该在该打印protoRabbit {大小: “小”}呢?我的理解中缺少什么?
在对象前面打印的名称是构造函数的名称。你的对象protoRabbit
具有构造Object
,因为你创建这个对象,使用对象文本:如果你想这个对象有不同的构造
var protoRabbit = {size: "small"};
,你必须使用你自己的构造函数:
function Constr() {
this.size = "small";
}
var protoRabbit = new Constr();
var fastRabbit = Object.create(protoRabbit);
console.log(Object.getPrototypeOf(fastRabbit)); //Constr { size: "small" }
编辑
我有Demurgos'答案同意,的console.log(obj);
结果取决于浏览器的实现。所以它可能会不同于浏览器和浏览器,并且可能(显然)在一个浏览器中有时甚至会发生变化(link)。
显示在控制台中的名称不是标准的。每个浏览器都要在打印对象时在其控制台中提供最佳的上下文。事实是,对象包含正确的属性,这就是我们真正需要的。
变量名称“protoRabbit”与对象本身无关。这只是一个恰好持有对象引用的变量。对象没有内部名称。 – Pointy
做'console.log(protoRabbit)',它会打印相同的内容。 – Bergi