真正理解JS原型和原型链
什么是原型、原型链
首先我们要搞明白原型的概念,什么原型?
每个对象都可以指定另一个对象来作为自己的原型,并继承原型的所有属性。那么对象当然是由构造函数创建的,那我们是不是就可以在声明构造函数的时候就指定一个对象作为原型,之后凡是由这个构造函数创建出来的对象都拥有共同的原型。每个构造函数在创建时都默认有一个prototype属性,用来指定原型。
function Student() {this.study = function () {console.log("学习");}}function Person() {this.live = function () {console.log('生存');}}Student.prototype = new Person()var student = new Student()student.live()//生存student.study()//学习
构造函数通过prototype和原型建立联系,那么由构造函数创建出来的实例是否也可以与原型建立联系?在每个对象被创建的时候,都默认有一个__proto__属性。每个JS对象通过__proto__属性去获取和设置原型,对象与对象之间通过__proto__属性联系在一起形成一条链就是“原型链”,可能对概念还不是很清晰,看下图:
其中红色的就是原型链。由图可见Object.prototype的__proto__属性就是null了,也就是说原型链终止,原型链的顶点就是Object.prototype
真正理解JS原型和原型链相关推荐
- js原型和原型链_理解JS中的原型和原型链
导读:JavaScript中(JS)的原型和原型链是web前端开发面试中经常被问到的问题:同时,如果我们能很好的理解JS中的原型和原型链,对于控制台输出的很多信息我们也能更好的理解,而原型链也是实现继 ...
- JS原型理解——JS中的原型对象
JavaScript中的原型对象 下一篇:JS原型理解--JS继承的实现方式 原型 原型是JavaScript中继承的基础,JavaScript的继承就是基于原型的继承. 一 理解原型 1.1 函数的 ...
- 如何更加简单的理解JS中的原型原型链概念
前面写了很多关于前端经验之谈,今天就来点干货吧.这篇文章将会介绍原型这个概念 原型是整个Javascript中比较重要的概念,如果面向对象想要学好,那么这个东西你必须要了解,不然后面的原型链,继承,多 ...
- 理解js中的原型链,prototype与__proto__的关系
说到prototype,就不得不先说下new的过程. 我们先看看这样一段代码: 1 <script type="text/javascript"> 2 var Pers ...
- 理解js的prototype原型对象
我们创建的每一个函数都有一个prototype(原型)属性.这个属性是一个指针,指向一个对象,而这个对象的用途是包括能够由特定类型的全部实例共享的属性和方法.假设依照字面意思来理解,那么prototy ...
- 彻底理解js中的原型对象和prototype属性
prototype(函数的原型属性) prototype 是一个指向该实例所使用的原型对象的[指针] prototype 是几乎所有的函数(除了某些内建函数)的属性 prototype 不是一个实例的 ...
- 深入理解JS作用域和作用域链
作用域(scope) 1.什么是作用域 概念:作用域是在程序运行时代码中的某些特定部分中变量.函数和对象的可访问性. 从使用方面来解释,作用域就是变量的使用范围,也就是在代码的哪些部分可以访问这个变量 ...
- 简单粗暴地理解js原型链–js面向对象编程
简单粗暴地理解js原型链–js面向对象编程 作者:茄果 链接:http://www.cnblogs.com/qieguo/archive/2016/05/03/5451626.html 原型链理解起来 ...
- 简单粗暴地理解js原型链--js面向对象编程
原型链理解起来有点绕了,网上资料也是很多,每次晚上睡不着的时候总喜欢在网上找点原型链和闭包的文章看,效果极好. 不要纠结于那一堆术语了,那除了让你脑筋拧成麻花,真的不能帮你什么.简单粗暴点看原型链吧, ...
- 【深入理解JS核心技术】2. 什么是原型链?
原型链是用于在现有对象的基础上构建新类型的对象.它类似于基于类的语言中的继承. 对象实例的原型可以通过 Obeject.getPrototypeOf(object) 或 proto 属性获得,而构造函 ...
最新文章
- 转:WinForm程序中两份mdf文件问题的解决方法
- 自学前端的高效学习路线.avi
- struts2开发action 的三种方法以及通配符、路径匹配原则、常量
- CSS-posiziton
- 开源远程访问服务器工具_为什么开源需要可访问性标准
- 基于JAVA+SpringMVC+MYSQL的营业厅终端销售系统
- 利用stack结构,将中缀表达式转换为后缀表达式并求值的算法实现
- php只保留两位小数
- 5ecsgo启动失败2错误代码2,5E打开csgo说csgo客户端需要更新 然后进不去游戏怎么回事?...
- TreeMap集合怎样依照Value进行排序
- 【微信小程序】图片选择、转码、压缩、预览、上传,file与base64
- NOIP2008 ISBN号码(一桶水)【A005】
- 大学英语六级考试大纲 A
- OSChina 周三乱弹 ——恩 爆照的落落酱什么的最美啦
- ngrok 搭建内网穿透
- python随机生成10个奇数_python怎么随机生成奇数
- 手机通讯录数据怎么恢复
- 通过jug 2.0.jar的成功下载的猜想
- 规培手册填写模板_肾内科 规培轮转登记手册模板.doc
- dp 就 dp ,数位dp是什么意思 ?
热门文章
- Jupyter Notebook 常用魔法命令
- 关于支付宝sdk出现Fatal error问题解决办法
- win10打开防火墙出现: windows防火墙无法更改某些设置,错误代码0x80070422
- 我来说说研发文化到底是个什么鬼
- 【题解】Luogu P5338 [TJOI2019]甲苯先生的滚榜
- 十九、商城 - 运营商登录-Spring Security(7)
- 前端文章收集(长期更新)2020-02-04
- python 客户信息管理系统_基于Python的客户分类和挖掘系统
- html div 不要超出,css怎么设置div超出不换行?
- C#练手之项目10-1之正义永不缺席