原型继承。。对上篇疑问处进行解答

之前我一直在疑问

function DOG(name){this.name = name;}
DOG.prototype = { species : '犬科' };
var dogA = new DOG('大毛');
var dogB = new DOG('二毛');
alert(dogA.species); // 犬科
alert(dogB.species); // 犬科

为什么这样是可行的,而为什么不行

function DOG(name){this.name = name;}
var dogA = new DOG('大毛');
var dogB = new DOG('二毛');
DOG.prototype = { species : '犬科' };
alert(dogA.species); // 犬科
alert(dogB.species); // 犬科

然后今天看别的资料偶然发现,创建实例的时候对实例的原型进行赋值引用变量,如果之后我修改构造器的原型的属性可以对实例有效果,但是如果直接替换了原型对象,则已经生成的实例不再受构造器的原型的影响。

如果用下面这段代码 可以更好的理解

var a = {name:'123'};
var b = a;
a = {};
a.age = 123;
console.log(b.age)// undefined
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,837评论 18 139
  • 本章将会介绍 存储属性的初始赋值自定义构造过程默认构造器值类型的构造器代理类的继承和构造过程可失败构造器必要构造器...
    寒桥阅读 778评论 0 0
  • 1.继承(接口继承和实现继承) 继承是 OO 语言中的一个最为人津津乐道的概念。许多 OO 语言都支持两种继承方式...
    believedream阅读 976评论 0 3
  • 博客内容:什么是面向对象为什么要面向对象面向对象编程的特性和原则理解对象属性创建对象继承 什么是面向对象 面向对象...
    _Dot912阅读 1,447评论 3 12
  • 那年 你用年少轻狂 走进 吉他里 把《原来的我》 弹起 吉他声 铿锵有力 留在多少人的梦中 吉他旁 那只送你的玫...
    沐雨夕烟阅读 339评论 12 26