javascript - 请问chrome中console.log打印的对象名是指向哪里?
阿神
阿神 2017-04-11 13:25:48
0
3
293

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);

打印结果:

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

阿神
阿神

闭关修行中......

reply all(3)
PHPzhong

具体请查看 javascript 对原型链的解释。继承与原型链
instanceof

阿神

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

小葫芦

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

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template