原型、原型链、原型链继承 理解
原型概念:
所有对象都有一个私有的 _proto_ 属性,而这个属性所对应的就是自身的原型;
原型链概念:
所有对像都有一个私有的 _proto_ 属性,而这个属性所指向的就是原型对象,它的原型对象又会有自身的原型对象,层层向上直至原型对象为null,那么这一过程就形成原型链;
我们通常比较容易混淆 prototype 和 _proto_,那么他们有什么区别呢?
prototype 属性:是函数所特有的,它是从一个函数指向一个对象,属于函数的原型对象,也就是这个函数(其实所有函数都可以作为构造函数)所创建的实例的原型对象; 这个属性是一个指针,指向一个对象,这个对象的用途就是包含所有实例共享的属性和方法(我们把这个对象叫做原型对象);
_proto_属性:这是每个对象(除null外)都会有的属性,是原型链查询中实际用到的,指向prototype(即指向构造函数的原型对象),是对象所特有的。注意,为什么Foo构造也有这个属性呢,因为在js的宇宙里万物皆对象,包括函数;
总结:
- __proto__ 是原型链查询中实际用到的,它总是指向 prototype;
- prototype 是函数所独有的,在定义构造函数时自动创建,它总是被 __proto__ 所指。
原型链继承:
- 创建一个父构造函数;
- 创建一个子构造函数;
- 设置子构造函数的原型对象是父构造函数的实例 --- 实现原型链继承;
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();
原型链继承注意:
- 修正构造器属性要在:设置原型链继承之后;
- 设置原型对象的属性要在:设置原型链继承之后;
- 设置原型链继承后,只能利用对象的动态特性设置原型对象,不能使用字面量的方式;
原型、原型链、原型链继承 理解相关推荐
- 原型和原型链原型继承_原型还是不原型:这就是问题所在。
原型和原型链原型继承 by Rishal Hurbans 由Rishal Hurbans 原型还是不原型:这就是问题所在. (To prototype or not to prototype: tha ...
- 【javascript】对原型对象、原型链的理解
原型对象,原型链这些知识属于基础类知识.但是平时开发过程中也很少用到. 看网上的意思,原型链用于es5开发场景下的继承.es6有了类语法糖之后,就自带继承了. 通过理解,个人画了一张原型链解构的关系图 ...
- js原型和原型链_初识JS原型/原型链/原型继承
本文思路: 原型->原型链->原型继承->基于原型的继承/ES6中的继承->__proto__与prototype 首先我们知道JS中有对象,比如: var 但是在我们没有对这 ...
- 原型和原型链原型继承_我如何看待Flash的教训,拥有原型的未来
原型和原型链原型继承 Prototyping is critical part of UX process. Obviously, prototyping tools play significant ...
- JavaScript 原型对象和原型链理解
一个例子让你彻底明白原型对象和原型链 1. 之前对js中的原型链和原型对象有所了解,每当别人问我什么是原型链和原型对象时,我总是用很官方(其实自己不懂)的解释去描述.有一句话说的好:如果你不能把一个很 ...
- [js高手之路]从原型链开始图解继承到组合继承的产生
于javascript原型链的层层递进查找规则,以及原型对象(prototype)的共享特性,实现继承是非常简单的事情 一.把父类的实例对象赋给子类的原型对象(prototype),可以实现继承 1 ...
- 原型继承+原型链 + 对象继承发展
一.原型继承: 1.说起原型继承,就要先由构造函数创造对象说起,首先了解构造函数内部基本原理: (1).在函数体最前面隐式的加上this = {} (2).执行 this.xxx = xxx; (3) ...
- 什么是原型、原型链、组合继承?
1.构造函数的原型 每一个构造函数都有一个属性--原型/原型对象,所以通过Student构造函数创建的对象,可以访问Student.prototype中的成员. 2.对象的原型 2.1.当调用对象的属 ...
- 原型,原型链,原型的继承
原型的作用? 1.节省内存空间 2.实现数据共享(继承) 什么是原型? 任何一个函数都有propotype属性,它本身是一个对象,我们称之为原型 构造函数,实例化对象与原型之间的关系? 1.任何一个函 ...
- 原型和原型链原型继承_原型制作的最甜蜜的一面
原型和原型链原型继承 交战的原因 (Casus belli) Let's start from the context: I was working as a UX/UI designer for a ...
最新文章
- springboot 添加拦截器之后中文乱码_springboot中配置了拦截器后,拦截器无效的解决方案之一...
- crt python_SecureCRT Python
- 算法提高课-图论-单源最短路的建图方式-AcWing 1128. 信使:dijkstra、 最短路取最大值
- mysql 时序 存储引擎_MySQL常见的三种存储引擎
- mysqld 进程非常多_MySQL binlog后面的编号最大是多大?
- 数据库乐观锁如何实现幂等性?
- 捷达vs7测试_捷达VS7——品质硬核!
- 面试官让我讲讲Java中的锁,我笑了
- matlab边算边出图命令,Matlab:不包含边境和工具栏的figure(移除保存图片的白边)...
- 用户和组 win2003
- Atitit QL查询语言总结 目录 1. QL = Query Language, 是查询语言的简称	1 2. 模型	2 2.1. 内嵌语言执行	2 2.2. 语言互操作	2 3. 具体实现	2
- 当我们点击一个文本域在IE下会发生的事件
- 20个经典模拟电路(详细图文)
- u盘被隐藏的文件怎么恢复
- mysql生成uuid_MySQL生成UUID
- 【Linux】面试再被问到权限问题,你直接把这篇文章给面试官看 —— 超详细的Linux权限总结
- 极简番茄钟与白噪音|潮汐
- 熊猫烧香版《菊花台》pk《菊花台》
- onnxruntime.capi.onnxruntime_pybind11_state.InvalidProtobuf: [ONNXRuntimeError] : 7 : INVALID_PROTOB
- 对《ToonSynth: Example-Based Synthesis of Hand-Colored Cartoon Animations》一文的理解(上)