资讯专栏INFORMATION COLUMN

初学者快速学会javascript原型,原型链,原型继承

hiYoHoo / 1715人阅读

摘要:学习,总绕不开原型,原型链,继承等等这些知识。对象那么好,怎么才能找一个呸,其实是创建创建对象的方法对象字面量工厂模式构造函数模式原型模式等。原型链有什么用来谈谈继承,继承可以利用构造函数,使用属性等来实现。

初学者学习javascript可能会感觉很困扰,但是你一旦真正了解了它,我相信你会爱上它。学习ECMAScript,总绕不开原型,原型链,继承等等这些知识。今天把它们放在一块儿,首先把理解他们作为小目标,构建一个完备的结构。不要眼高手低,我们一步一步来理解。

从对象的开始

1.何为对象?对象是数据,这个数据拥有属性和方法,有可以进行封装和继承等等的特点。
2.何为面向对象编程?面向对象编程是一个使用一系列的对象进行协作,从而灵活高效地解决复杂问题的编程思想。

对象那么好,怎么才能找一个(呸,其实是创建)?

创建对象的方法:对象字面量、工厂模式、构造函数模式、原型模式等。
前面三个暂且不看,他们的短板大家应该都知道。主要来看如何用原型模式创建一个对象。

来个看烂了的例子,把一个“”作为对象,尽情地创建吧:

function Person(){
}
Person.prototype.name = "程流流";//是的,我的名字
Person.prototype.age = 21;
Person.prototype.job = "大学生";
Person.prototype.sayName = function(){
alert(this.name);
};
var person1 = new Person();
person1.sayName(); //"程流流"
var person2 = new Person();
person2.sayName(); //"程流流"
alert(person1.sayName == person2.sayName); //true

例子虽然简单,但是内容丰富,来解剖一下:
这个例子里面有构造函数,原型对象,实例对象, prototype
属性,constructor属性,_proto_属性,很丰富吧。关于他们之间的关系,我学习的时候很容易弄混掉(因为我大脑不够聪慧,这个没办法),但是有天上课的时候突然就想明白了,然后就写在了书上。看图:

是不是很简单,明白了他们都是什么以及之间的关系后我们进行到下一步...

原型链

原型链是一条链。我们前面利用构造器(就是constructor)创建了新对象,新对象都有prototype属性,而我们new出来的新实例对象有默认的一个只想构造器原型(原型对象)的内部指针_proto_,那个原型prototype它也是个对象,它也有自己的原型,原型对象又包含一个指向另一个原型的指针,相应地,另一个原型中也包含着一个指向另一个构造函数
的指针。假如另一个原型又是另一个类型的实例,那么上述关系依然成立,如此层层递进,就构成了实例与原型的链条。

原型链有什么用

来谈谈继承,继承可以利用构造函数,使用prototype属性等来实现。原型继承主要就是用原型链来实现,怎么个继承法呢?就是利用原型让一个引用类型来继承另一个引用类型的属性和方法。
记得上面的草图吧,我来画一个好看点的:

看到了吗,沿着原型链一环一环的继承。

初学者看到这里相信已经对面向对象编程有关的重要概念有了一定理解,下一篇来谈一谈有关闭包的知识。第一次写文章,文笔太差,也没有高深的技术在里面,如果帮助初学者理清了思路,我的目的就达到了。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/88453.html

相关文章

  • 学习设计模式前需要知道的事情

    摘要:为什么要学习设计模式做事情之前问个为什么总是好的。设计模式的使用方法关于使用方式,像我这种初学者最容易犯的错误就是生搬硬套,但是模仿本来也是学习的一个过程,最重要的事情是在模仿中要学会思考。 为什么要学习设计模式? 做事情之前问个为什么总是好的。关于设计模式的好坏,我在知乎上也看过一些讨论,有知友对其提出过一些疑问,里面有一些关于设计模式的观点: 设计模式有何不妥,所谓的荼毒体现在哪...

    kviccn 评论0 收藏0
  • JavaScript系列(四) - 收藏集 - 掘金

    摘要:函数式编程前端掘金引言面向对象编程一直以来都是中的主导范式。函数式编程是一种强调减少对程序外部状态产生改变的方式。 JavaScript 函数式编程 - 前端 - 掘金引言 面向对象编程一直以来都是JavaScript中的主导范式。JavaScript作为一门多范式编程语言,然而,近几年,函数式编程越来越多得受到开发者的青睐。函数式编程是一种强调减少对程序外部状态产生改变的方式。因此,...

    cfanr 评论0 收藏0
  • 面向对象的 JavaScript

    摘要:是完全的面向对象语言,它们通过类的形式组织函数和变量,使之不能脱离对象存在。而在基于原型的面向对象方式中,对象则是依靠构造器利用原型构造出来的。 JavaScript 函数式脚本语言特性以及其看似随意的编写风格,导致长期以来人们对这一门语言的误解,即认为 JavaScript 不是一门面向对象的语言,或者只是部分具备一些面向对象的特征。本文将回归面向对象本意,从对语言感悟的角度阐述为什...

    novo 评论0 收藏0
  • 细说 Javascript 对象篇(二) : 原型对象

    摘要:并没有类继承模型,而是使用原型对象进行原型式继承。我们举例说明原型链查找机制当访问一个对象的属性时,会从对象本身开始往上遍历整个原型链,直到找到对应属性为止。原始类型有以下五种型。此外,试图查找一个不存在属性时将会遍历整个原型链。 Javascript 并没有类继承模型,而是使用原型对象 prototype 进行原型式继承。 尽管人们经常将此看做是 Javascript 的一个缺点,然...

    lansheng228 评论0 收藏0
  • 快速掌握JavaScript面试基础知识(三)

    摘要:第一部分请点击快速掌握面试基础知识一关键字如果使用关键字来调用函数式很特别的形式。该对象默认包含了指向原构造函数的属性。接下来通过例子来帮助理解属性包含了构造函数以及构造函数中在上定义的属性。也就是说,的回调函数后执行。 译者按: 总结了大量JavaScript基本知识点,很有用! 原文: The Definitive JavaScript Handbook for your next...

    qieangel2013 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<