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 的结果都一致,请大神们帮忙解惑,万分感谢
具体请查看 javascript 对原型链的解释。继承与原型链
instanceof
刚开始我也非常想不通你这个问题的原因,所以又去提了一个跟你这个差不多的问题JavaScript 原型链变化,为什么导致变量跟着变化?,后来发现除了 Chrome 浏览器这样显示之外,其他的浏览器都没有这个问题的,故此判断这个估计是 Chrome 浏览器的 bug。
这其实是一种chrome的机制,他认为你把prototype原型对象付给了一个实例,所以prototype只能指向最上层,因为只有构造函数才有prototype所以才会这样显示。