原型,原型链,原型的继承
原型的作用?
1.节省内存空间
2.实现数据共享(继承)
什么是原型?
任何一个函数都有propotype属性,它本身是一个对象,我们称之为原型
构造函数,实例化对象与原型之间的关系?
1.任何一个函数都有prototype属性,它本身是一个对象,我们称之为原型
2.构造函数也是函数,也都有prototype属性,它本身是个对象,我们称之为原型
3.构造函数的原型对象上的属性和方法都可以被实例化对象所继承
4.任何一个对象都有constructor属性,实例化对象的constructor属性指向构造函数
5.原型也是对象,也有constructor属性,构造函数的原型对象的constructor属性指向构造函数
6.任何一个对象都有__proto__属性,实例化对象的__proto__属性指向构造函数的原型
在原型的函数中this的指向?
在原型的函数中,如果实例化对象调用该函数,this指向实例化对象,如果原型对象调用该函数,this指向原型对象
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>原型</title></head><body></body><script>// 结论一推理:function fn1() {}console.log(fn1)console.log(fn1.prototype)console.log(typeof fn1.prototype)console.log(fn1.prototype instanceof Object) //trueconsole.log(fn1.prototype instanceof Array)// 结论二推理:function Car(brand) {this.brand = brand// this.color = colorthis.run = function () {console.log(this.brand + '会行驶!')}}// 结论三的推理Car.prototype.color = '黑色'Car.prototype.playVideo = function () {console.log(this)console.log(this.brand + '可以放音乐')}Car.prototype.playVideo()console.log(Car.prototype)var car1 = new Car('路虎')console.log(car1)var car2 = new Car('法拉利')console.log(car2)var car3 = new Car('宾利')console.log(car3)console.log(car1.color)console.log(car2.color)console.log(car3.color)car1.playVideo()car2.playVideo()car3.playVideo()// 结论四:上午的推理// 结论五的推理console.log(Car.prototype.constructor)// 结论六:console.log(car1.__proto__)console.log(Car.prototype);console.log(Car.prototype.__proto__);console.log(Object.prototype);console.log(Object.prototype==Car.prototype.__proto__);console.log(Car.prototype.prototype==Object.prototype);console.log(Car.prototype==Function);
console.log(Car.constructor);
console.log(Car.prototype.__proto__==Object.prototype)console.log(window.history.__proto__)var obj = {}console.log(obj.__proto__)</script>
</html>
原型链
在javascript中每个对象都会有一个__proto__属性,当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么他就会去__proto__里去找这个属性,这个__proto__又会有自己的__proto__,于是就这样一直找下去,这就是原型链的概念
原型链最终指向null
实例化对象的属性查找规则
先从原型链上查找,有就返回,如果没有就时undefined或者报错
将原型对象写成字面量形式会丢失constructor属性,如何解决?
既然是字面量形式,那么加上即可
原型的继承
原型继承是将父元素的实例对象当做子元素构造函数的原型对象。
// 构造函数function student(name, age) {this.name = namethis.age = age}// 实例化对象let s1 = new student('张三', 18)// 子元素通过自己的原型对象的原型和父元素(object)的原型对象对比// 如果相等就代表他们指向的是同一个原型对象console.log(s1.__proto__.__proto__ === Object.prototype)//true// 子元素通过自己原型的原型去找自己的父元素console.log(s1.__proto__.__proto__.constructor)//object
原型,原型链,原型的继承相关推荐
- [js高手之路]从原型链开始图解继承到组合继承的产生
于javascript原型链的层层递进查找规则,以及原型对象(prototype)的共享特性,实现继承是非常简单的事情 一.把父类的实例对象赋给子类的原型对象(prototype),可以实现继承 1 ...
- 原型继承+原型链 + 对象继承发展
一.原型继承: 1.说起原型继承,就要先由构造函数创造对象说起,首先了解构造函数内部基本原理: (1).在函数体最前面隐式的加上this = {} (2).执行 this.xxx = xxx; (3) ...
- 原型和原型链原型继承_原型还是不原型:这就是问题所在。
原型和原型链原型继承 by Rishal Hurbans 由Rishal Hurbans 原型还是不原型:这就是问题所在. (To prototype or not to prototype: tha ...
- js原型和原型链_初识JS原型/原型链/原型继承
本文思路: 原型->原型链->原型继承->基于原型的继承/ES6中的继承->__proto__与prototype 首先我们知道JS中有对象,比如: var 但是在我们没有对这 ...
- 什么是原型、原型链、组合继承?
1.构造函数的原型 每一个构造函数都有一个属性--原型/原型对象,所以通过Student构造函数创建的对象,可以访问Student.prototype中的成员. 2.对象的原型 2.1.当调用对象的属 ...
- 原型和原型链原型继承_我如何看待Flash的教训,拥有原型的未来
原型和原型链原型继承 Prototyping is critical part of UX process. Obviously, prototyping tools play significant ...
- 原型和原型链原型继承_原型制作的最甜蜜的一面
原型和原型链原型继承 交战的原因 (Casus belli) Let's start from the context: I was working as a UX/UI designer for a ...
- javascript原型对象、原型链、构造函数
1.原型对象(原型).原型链 先放一张在网上看到的关于原型和原型链的图,非常不错. 如果你能看懂,那就对原型链有了一定了解,如果看不懂,对照下面这几点来看图: js中所有函数都有一个prototype ...
- 【javascript】对原型对象、原型链的理解
原型对象,原型链这些知识属于基础类知识.但是平时开发过程中也很少用到. 看网上的意思,原型链用于es5开发场景下的继承.es6有了类语法糖之后,就自带继承了. 通过理解,个人画了一张原型链解构的关系图 ...
最新文章
- 微信人人商城云服务器,微信支付 · 微智人人商城使用文档 · 看云
- python opencv 画矩形框 外接矩形
- 修改Project中的表名及字段名
- try catch 有多烦人,我就有多暴躁!一次搞定 Exception ^ ^
- matlab 地埋管温度场,地埋管换热器周围土壤冻结温度场的模拟研究
- LeetCode 2058. 找出临界点之间的最小和最大距离(链表)
- 基于JAVA+SpringMVC+Mybatis+MYSQL的政务信息管理系统
- CodeForces 698A - Vacations (Codeforces Round #363 (Div. 2))
- 面向对象(二) 继承/里氏替换
- 服务器提交任务和直接运行,实现简单服务器学习多线程与Executor
- We Chall-Encodings: URL -Writeup
- 软件集成测试分析,软件集成测试报告模板
- 考研408(操作系统、计算机组成原理、数据结构、计算机网络)
- JAVA音程_桌面应用|与 Linux 一起学习:学习音乐
- 点击轮播图片,链接跳转错误
- 【YOLOv4原文+翻译】YOLOv4:Optimal Speed and Accuracy of Object Detection
- WordPress树叶飘落特效插件1.2
- python表格中插入图片_运维(1)python操作excel插入图片
- LeetCode刷题之python解法(持续更新)
- Java Thread 源码解析
热门文章
- 搭建博客 —— LNMP + wordpress
- 【Python技能树共建】字符串方法
- HTML5一阶段学习总结
- python实现数组键值排序
- 全文搜索技术 Lucene solr es (二)Solr(7.7.1)
- 径向基神经网络(RBF)回归预测MATLAB实现超详细
- react待办事项_使用React创建一个简单的待办应用
- SVN A C D M G U R I的含义
- java语言程序设计期末考试试题及答案_《JAVA语言程序设计》期末考试试题及答案1-7.doc...
- 考研调剂途径方法和规则要求