javascript - 请问chrome中console.log打印的对象名是指向哪里?
阿神
阿神 2017-04-11 13:25:48
[JavaScript讨论组]

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 的结果都一致,请大神们帮忙解惑,万分感谢

阿神
阿神

闭关修行中......

全部回复(3)
PHPz

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

阿神

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

高洛峰

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号