原型的作用?

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

原型,原型链,原型的继承相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. javascript原型对象、原型链、构造函数

    1.原型对象(原型).原型链 先放一张在网上看到的关于原型和原型链的图,非常不错. 如果你能看懂,那就对原型链有了一定了解,如果看不懂,对照下面这几点来看图: js中所有函数都有一个prototype ...

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

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

最新文章

  1. 微信人人商城云服务器,微信支付 · 微智人人商城使用文档 · 看云
  2. python opencv 画矩形框 外接矩形
  3. 修改Project中的表名及字段名
  4. try catch 有多烦人,我就有多暴躁!一次搞定 Exception ^ ^
  5. matlab 地埋管温度场,地埋管换热器周围土壤冻结温度场的模拟研究
  6. LeetCode 2058. 找出临界点之间的最小和最大距离(链表)
  7. 基于JAVA+SpringMVC+Mybatis+MYSQL的政务信息管理系统
  8. CodeForces 698A - Vacations (Codeforces Round #363 (Div. 2))
  9. 面向对象(二) 继承/里氏替换
  10. 服务器提交任务和直接运行,实现简单服务器学习多线程与Executor
  11. We Chall-Encodings: URL -Writeup
  12. 软件集成测试分析,软件集成测试报告模板
  13. 考研408(操作系统、计算机组成原理、数据结构、计算机网络)
  14. JAVA音程_桌面应用|与 Linux 一起学习:学习音乐
  15. 点击轮播图片,链接跳转错误
  16. 【YOLOv4原文+翻译】YOLOv4:Optimal Speed and Accuracy of Object Detection
  17. WordPress树叶飘落特效插件1.2
  18. python表格中插入图片_运维(1)python操作excel插入图片
  19. LeetCode刷题之python解法(持续更新)
  20. Java Thread 源码解析

热门文章

  1. 搭建博客 —— LNMP + wordpress
  2. 【Python技能树共建】字符串方法
  3. HTML5一阶段学习总结
  4. python实现数组键值排序
  5. 全文搜索技术 Lucene solr es (二)Solr(7.7.1)
  6. 径向基神经网络(RBF)回归预测MATLAB实现超详细
  7. react待办事项_使用React创建一个简单的待办应用
  8. SVN A C D M G U R I的含义
  9. java语言程序设计期末考试试题及答案_《JAVA语言程序设计》期末考试试题及答案1-7.doc...
  10. 考研调剂途径方法和规则要求