“实例中的指针仅指向原型,而不是指向构造函数”。

“重写原型对象切断了现有原型与任何之前已经存在的对象实例之间的关系;它们引用的仍然是最初的原型”。——前记

var fun = function(){}
fun.prototype = {
name : 'peter',
age : 25
}
var a = new fun();
var b = new fun();
console.log(a.name, b.name);//peter peter
fun.prototype.name = 'jack';
console.log(a.name, b.name);//jack jack
fun.prototype = {};
fun.prototype.name = 'tom';
console.log(a.name, b.name); //jack jack
console.log('1',b.constructor === fun) //1 false
console.log('2',b instanceof fun) //2 false
b.constructor.prototype.name = 'kitty'; //b.constructor.prototype指向的是fun的prototype
console.log(a.name, b.name); //jack jack //如何修改a和b的name是tom?
a.__proto__.name = 'tom';
console.log(a.name,b.name)

上面的b.constructor指向的是构造函数,但是如果构造函数原型被重写,b.constructor !== fun了,原因是指针指向的其实是原型对象。所以:实例化对象的constructor对象不是任何时候都指向构造函数本身,除非构造函数的原型一直不变,如果构造函数原型重写,全等关系就破灭了。

可以看出,实例在原型修改前后的不同,实例只继承实例化之前的原型,可以修改属性值,但是如果重写,那么实例化对象的指针__proto__指向的还是以前的原型对象,如果想要重写实例的原型,则需要修改实例化对象的__proto__属性值了。

【完】

The normal,they make me feel afraid

The crazy, they make me feel sane

最新文章

  1. Linux 笔记
  2. Educational Codeforces Round 15 C. Cellular Network(二分)
  3. rsync+inotify实现服务器数据同步
  4. 8051学习笔记——AD
  5. [swustoj 771] 奶牛农场
  6. 设置Session的超时时间
  7. uva11624 - Fire!
  8. unity中的委托
  9. 【Django】模型层说明
  10. 前端开发,走浏览器缓存真的很烦,拒绝浏览器走缓存从meta标签做起!
  11. 正则表达式工具RegexBuddy
  12. python2 编码与解码
  13. python中的变量和算数运算
  14. IDEA进行远程调试
  15. css居中问题:水平居中、垂直居中
  16. 42. oracle通过两张表的一个字段对应,update其中一张表的某个字段
  17. js异步加载的5种方式
  18. oracle 嵌套查询
  19. ImageLoader作用 AAAA
  20. 《精通Python设计模式》学习结构型之外观模式

热门文章

  1. 2019牛客多校(第十场)F Popping Balloons —— 线段树+枚举
  2. json转换为go类文件,js脚本,nodejs执行
  3. OpenCV Laplace 算子
  4. C# 开启线程的几种方式
  5. 吴裕雄--天生自然python学习笔记:Python3 标准库概览
  6. Mybatis工作流程及其原理与解析
  7. JS做深度学习1——偶然发现与入门
  8. react 踩坑记
  9. 这是100年后火星的未来,到处都是CBD!
  10. iOS 9,为前端世界都带来了些什么?「译」 - 高棋的博客