var protoRabbit = {size: "small"};
var fastRabbit = Object.create(protoRabbit);
console.log(Object.getPrototypeOf(fastRabbit));
以上代码段打印:
对象{size:“small”}
这不应该打印protoRabbit {size:“small”}吗?我的理解中缺少什么?
答案 0 :(得分:6)
在对象前面打印的名称是构造函数的名称。您的对象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);
的结果取决于浏览器的实现。因此,从浏览器到浏览器可能会有所不同,并且(显然)有时甚至会在一个浏览器中变化(Programming Best Practices - ADF Faces & JavaScript)。
答案 1 :(得分:1)
控制台中显示的名称不是标准名称。每个浏览器都可以在打印对象时在其控制台中提供最佳上下文。事实是,对象包含正确的属性,而这正是我们真正需要的。