JavaScript 原型、原型链与原型继承

原型,原型链与原型继承

用自己的方式理解原型,原型链和原型继承

javascript——原型与原型链

JavaScript中的原型与原型链

JS重点整理之JS原型链彻底搞清楚

基本概念和原型链

  1. Prototype(原型对象)

每个函数都有, 指向其原型对象

  1. _proto_

这是除了null都有的属性, 指向其原型

  1. constructor

每个原型都有, 指向构造函数(函数)

原型链

实例和原型

function Person() {}

Person.prototype.name = 'Kevin';

var person = new Person();

person.name = 'Daisy';
console.log(person.name) // Daisy  实例覆盖原型

delete person.name;
console.log(person.name) // Kevin

在这个例子中,我们给实例对象 person 添加了 name 属性,当我们打印 person.name 的时候,结果自然为 Daisy。但是当我们删除了 person 的 name 属性时,读取 person.name,从 person 对象中找不到 name 属性就会从 person 的原型也就是 person._proto_ ,也就是 Person.prototype中查找,幸运的是我们找到了 name 属性,结果为 Kevin。

如果原型上依然没找到,就会继续到原型的原型上去找直到null为止

原型继承

如果让原型对象等于另一个类型的实例,此时的原型对象将包含一个指向另一个原型的指针(proto),另一个原型也包含着一个指向另一个构造函数的指针(constructor)。

function Animal(){  
    this.type = "animal";  
}  
Animal.prototype.getType = function(){  
    return this.type;  
}  
  
function Dog(){  
    this.name = "dog";  
}  
Dog.prototype = new Animal();  //此步骤为继承 父 中的属性
  
Dog.prototype.getName = function(){  
    return this.name;  
}  s
  
var xiaohuang = new Dog();
//原型链关系  
xiaohuang.__proto__ === Dog.prototype  
Dog.prototype.__proto__ === Animal.prototype  
Animal.prototype.__proto__ === Object.prototype  
Object.prototype.__proto__ === null 
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本期节目由奔驰哥和大壮以及他的妈妈、浩然以及他的妈妈、舜舜、竹姐、华华姐姐一起参与录制,请欣赏! 在上一期里奔驰哥...
    那时静空阅读 12,157评论 0 0
  • 【90天月度检视】 姓名赵金娜 #基本情况# 姓名:赵芮彤 年龄:12岁 小组:第5组 #第三阶段30天目标及完成...
    迷茫的猴子妈妈阅读 1,778评论 0 0
  • 对于校园,那是我们再也熟悉不过的学习天地了。有人说:学习是一件非常无聊的事情,更别说校园生活的枯燥乏味了。可我认为...
    怪咖稚阅读 2,939评论 0 4
  • 2019VNL澳门站14人名单】 主攻:朱婷、李盈莹、刘晓彤、张常宁 副攻:颜妮、袁心玥、杨涵玉、胡铭媛 接应:龚...
    天下排球阅读 1,342评论 0 0
  • 人生不管是得到什么或是失去什么,把握住佛法的核心内容,心会坦然自得而清净祥和。执着佛法上的修行是需要的,坚持应有的...
    倦客行阅读 4,114评论 0 8

友情链接更多精彩内容