请问chrome中console.log打印的对象名是指向哪里?

js代码:

function A(x){  
    this.x = x ;  
  }  
  
function B(y) {  
  this.y = y;  
}  

B.prototype = new A(1);  

function C(z) {  
  this.z = z;  
}  
var b = new B(2);
C.prototype = new B(2);  
  
console.log(b);
console.log(C.prototype);

console.log(b instanceof A);
console.log(C.prototype instanceof A);
console.log(b.constructor);
console.log(C.prototype.constructor);

打印结果:

clipboard.png

如图所示:b 和 C.prototype 都是 构造函数B 的实例化对象,为何打印这两个对象的时候, b 显示的结果第一个字母是B,而C.prototype显示的第一个字母是A,而两个通过 instanceof 和 constructor 的结果都一致,请大神们帮忙解惑,万分感谢

阅读 5.3k
3 个回答

刚开始我也非常想不通你这个问题的原因,所以又去提了一个跟你这个差不多的问题JavaScript 原型链变化,为什么导致变量跟着变化?,后来发现除了 Chrome 浏览器这样显示之外,其他的浏览器都没有这个问题的,故此判断这个估计是 Chrome 浏览器的 bug。

这其实是一种chrome的机制,他认为你把prototype原型对象付给了一个实例,所以prototype只能指向最上层,因为只有构造函数才有prototype所以才会这样显示。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏