从JavaScript的继承角度解析什么是原型链
2017-11-09 23:54
519 查看
继承简介
主要是为了代码的重用。因为可以在继承后直接使用别人定义好的方法,而不用自己书写,如果别人写的方法不够优化的情况下,自己还以重写父类的方法,我在这里推荐一本书《悟透JavaScript》,不错的书,值得看一看。在JavaScript中由于没有类的概念,只有构造函数的概念。所以不存在想纯面向对象里面的那样的继承
php继承写法:
class subClass extends parClass{ }
高大上的原型链要出来了,准备好哦!
在JavaScript中类的继承使用的是另外一种继承方式,叫做基于原型对象的继承,如何实现的呢?是时候举例说明
现在有一只猫,猫会爬树方法;同时还有一只老虎,老虎是不会爬树的,如何实现老虎可以爬树的方法?解决:让老虎的构造函数去继承猫的构造函数实例化的对象。那么使用老虎的构造函数实例化的对象就可以使用猫的方法。
上代码!
<script type="text/javascript"> // 猫的构造函数 function Cat(name){ this.name = name; this.action = function(){ console.log('i am pashu'); }; } // 老虎的构造函数 function Tiger(name) { this.name = name; } var cat1 = new Cat('波斯猫'); console.log(cat1.name); cat1.action(); // cat1的爬树 // 解决!!!!!!这里是重点!!!! Tiger.prototype = cat1; // 真正的猫 var tiger1 = new Tiger('小老虎'); console.log(tiger1.name); tiger1.action(); // tiger1的爬树 console.log(tiger1); // action方法 </script>
老虎构造函数(类)实例化的对象存在一个叫做_proto_的一个属性(隐式属性,每个浏览的叫法不一定相同,但是JavaScript中对象都这有这个属性),这个属性指向上面老虎构造函数(类)继承的猫的构造函数实例化的对象。所以使用老虎构造函数(类)实例化的对象就可以调用猫的构造函数里面的所有的方法和属性。
上面讲的有点抽象是不是,我们console.log正面理解,注意 protp
通过使用 Tiger.prototype = cat1后,发现tiger1可以使用爬树的方法,但是打印tiger1对象,发现只存在两个属性(name,proto),并没有爬树的方法。那爬树方法到底是从哪里来的呢?
通过点击[proto]可以发现是一个对象,这个对象上面存在一个爬树的方法。
那么这个proto又是什么?
答:这个就是JavaScript中的原型链。!!!!!!!!呦呦呦,切克闹
什么还不理解!!?我们画图
通过上面这张图我们可以总计一下:
原型链是会一直指导最上面直到为null,也就是说我们可以在倒数第二层的原型链增加方法,老虎也会拥有,如下代码://在上面的代码增加这两行代码,老虎也就可以,卖萌了,这就是利用到了原型链 Object.prototype.maimeng =function(){ console.log('我能卖萌'); }; //不相信?那我再console.log,看下图,相信了吧!
相关文章推荐
- JavaScript核心-继承-原型链
- JavaScript面向对象——深入理解默认的继承方式原型链
- Javascript 笔记(4)----继承与原型链
- Javascript学习笔记2 继承 原型链
- JavaScript面向对象初探——原型链、封装和继承
- 一张图让你搞懂JavaScript的继承与原型链
- 【JavaScript学习】面向对象的程序设计(3):原型链继承
- JavaScript 指南 - 继承与原型链
- JavaScript 利用原型和原型链实现对象继承
- 什么是JavaScript解析引擎?
- JavaScript继承与原型链
- javascript原型深入解析1-prototype 和原型链、js面向对象
- JavaScript 函数原型链解析
- javascript 的 继承(一) 之 原型链继承
- javascript, 原型链,javascript 原型链方法,原型链继承,原型链和作用域链
- JavaScript的继承--原型链
- Javascript编程难点解析,如this,原型,继承,闭包等这些概念
- javascript中的继承-原型链
- javascript原型链继承用法实例分析
- javascript原型链继承用法实例分析