原型概念:

所有对象都有一个私有的 _proto_ 属性,而这个属性所对应的就是自身的原型;

原型链概念:

       所有对像都有一个私有的 _proto_ 属性,而这个属性所指向的就是原型对象,它的原型对象又会有自身的原型对象,层层向上直至原型对象为null,那么这一过程就形成原型链;

我们通常比较容易混淆 prototype 和 _proto_,那么他们有什么区别呢?

prototype 属性:是函数所特有的,它是从一个函数指向一个对象,属于函数的原型对象,也就是这个函数(其实所有函数都可以作为构造函数)所创建的实例的原型对象; 这个属性是一个指针,指向一个对象,这个对象的用途就是包含所有实例共享的属性和方法(我们把这个对象叫做原型对象);

_proto_属性:这是每个对象(除null外)都会有的属性,是原型链查询中实际用到的,指向prototype(即指向构造函数的原型对象),是对象所特有的。注意,为什么Foo构造也有这个属性呢,因为在js的宇宙里万物皆对象,包括函数;

总结:

  • __proto__ 是原型链查询中实际用到的,它总是指向 prototype;
  • prototype 是函数所独有的在定义构造函数时自动创建,它总是被 __proto__ 所指。

原型链继承:

  1. 创建一个父构造函数;
  2. 创建一个子构造函数;
  3. 设置子构造函数的原型对象是父构造函数的实例 --- 实现原型链继承;
    function A() {this.name = "默认";this.showName = function () {console.log(this.name);}
    }
    A.prototype.logDes = function () {console.log("des");
    }function B() {}// 实现了原型链继承
    B.prototype = new A();var b1 = new B();console.log(b1.name);
    b1.showName();

原型链继承注意:

  • 修正构造器属性要在:设置原型链继承之后;
  • 设置原型对象的属性要在:设置原型链继承之后;
  • 设置原型链继承后,只能利用对象的动态特性设置原型对象,不能使用字面量的方式;

原型、原型链、原型链继承 理解相关推荐

  1. 原型和原型链原型继承_原型还是不原型:这就是问题所在。

    原型和原型链原型继承 by Rishal Hurbans 由Rishal Hurbans 原型还是不原型:这就是问题所在. (To prototype or not to prototype: tha ...

  2. 【javascript】对原型对象、原型链的理解

    原型对象,原型链这些知识属于基础类知识.但是平时开发过程中也很少用到. 看网上的意思,原型链用于es5开发场景下的继承.es6有了类语法糖之后,就自带继承了. 通过理解,个人画了一张原型链解构的关系图 ...

  3. js原型和原型链_初识JS原型/原型链/原型继承

    本文思路: 原型->原型链->原型继承->基于原型的继承/ES6中的继承->__proto__与prototype 首先我们知道JS中有对象,比如: var 但是在我们没有对这 ...

  4. 原型和原型链原型继承_我如何看待Flash的教训,拥有原型的未来

    原型和原型链原型继承 Prototyping is critical part of UX process. Obviously, prototyping tools play significant ...

  5. JavaScript 原型对象和原型链理解

    一个例子让你彻底明白原型对象和原型链 1. 之前对js中的原型链和原型对象有所了解,每当别人问我什么是原型链和原型对象时,我总是用很官方(其实自己不懂)的解释去描述.有一句话说的好:如果你不能把一个很 ...

  6. [js高手之路]从原型链开始图解继承到组合继承的产生

    于javascript原型链的层层递进查找规则,以及原型对象(prototype)的共享特性,实现继承是非常简单的事情 一.把父类的实例对象赋给子类的原型对象(prototype),可以实现继承 1 ...

  7. 原型继承+原型链 + 对象继承发展

    一.原型继承: 1.说起原型继承,就要先由构造函数创造对象说起,首先了解构造函数内部基本原理: (1).在函数体最前面隐式的加上this = {} (2).执行 this.xxx = xxx; (3) ...

  8. 什么是原型、原型链、组合继承?

    1.构造函数的原型 每一个构造函数都有一个属性--原型/原型对象,所以通过Student构造函数创建的对象,可以访问Student.prototype中的成员. 2.对象的原型 2.1.当调用对象的属 ...

  9. 原型,原型链,原型的继承

    原型的作用? 1.节省内存空间 2.实现数据共享(继承) 什么是原型? 任何一个函数都有propotype属性,它本身是一个对象,我们称之为原型 构造函数,实例化对象与原型之间的关系? 1.任何一个函 ...

  10. 原型和原型链原型继承_原型制作的最甜蜜的一面

    原型和原型链原型继承 交战的原因 (Casus belli) Let's start from the context: I was working as a UX/UI designer for a ...

最新文章

  1. springboot 添加拦截器之后中文乱码_springboot中配置了拦截器后,拦截器无效的解决方案之一...
  2. crt python_SecureCRT Python
  3. 算法提高课-图论-单源最短路的建图方式-AcWing 1128. 信使:dijkstra、 最短路取最大值
  4. mysql 时序 存储引擎_MySQL常见的三种存储引擎
  5. mysqld 进程非常多_MySQL binlog后面的编号最大是多大?
  6. 数据库乐观锁如何实现幂等性?
  7. 捷达vs7测试_捷达VS7——品质硬核!
  8. 面试官让我讲讲Java中的锁,我笑了
  9. matlab边算边出图命令,Matlab:不包含边境和工具栏的figure(移除保存图片的白边)...
  10. 用户和组 win2003
  11. Atitit QL查询语言总结 目录 1. QL = Query Language, 是查询语言的简称 1 2. 模型 2 2.1. 内嵌语言执行 2 2.2. 语言互操作 2 3. 具体实现 2
  12. 当我们点击一个文本域在IE下会发生的事件
  13. 20个经典模拟电路(详细图文)
  14. u盘被隐藏的文件怎么恢复
  15. mysql生成uuid_MySQL生成UUID
  16. 【Linux】面试再被问到权限问题,你直接把这篇文章给面试官看 —— 超详细的Linux权限总结
  17. 极简番茄钟与白噪音|潮汐
  18. 熊猫烧香版《菊花台》pk《菊花台》
  19. onnxruntime.capi.onnxruntime_pybind11_state.InvalidProtobuf: [ONNXRuntimeError] : 7 : INVALID_PROTOB
  20. 对《ToonSynth: Example-Based Synthesis of Hand-Colored Cartoon Animations》一文的理解(上)

热门文章

  1. 苹果怎么取消连续包月服务
  2. python求解矩阵_python矩阵运算
  3. 用Java编写有读取和保存文本功能的记事本程序
  4. [ES4封装教程]3.使用 Easy Sysprep v4 封装 Windows 7
  5. 团队项目第2组-Beta阶段反思与进度管理
  6. DB2数据库通过日志表恢复数据
  7. 金刀的博客 | 《后端架构师技术图谱》
  8. 10月6日回顾|每个勇于挑战的舞者都火力全开,场面燃炸!
  9. 麻省理工博士退学开网店两年身家过千万
  10. YHM-350五轴转台的特点包括哪些方面?