Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象。但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类)。

Javascript面向对象

1、概念

面向对象程序设计(Object-oriented programming,OOP)是一种程序设计范型,同时也是一种程序开发的方法。对象指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。

2、创建对象(既然要面向对象编程,当然要学会创建呀)

js创建对象主要有单例模式,工厂模式,构造函数模式,原型模式等,参照另一篇JS设计模式。

3、继承

js实现继承有原型链继承、构造继承、实例继承、组合继承、寄生继承、参见另一篇Js继承(inherit)

4、概念

封装:暴露特有的公有接口,除此之外私有化自有属性和方法,使外界并不能改变。这就是封装。

继承:子类可以调用父类的属性和方法

多态:同一方法在不同对象执行,有不同结果。子类重写了父类函数。

####5、原型与原型链

实例与原型的链条,就是让一个实例继承所有的对象

#####1.概念

显示原型:每一个构造函数在诞生的时候,会自带一个prototype(显示原型)属性,这个属性也是一个对象,可以让实例可以无条件访问。prototype对象有一个constructor属性,指向该构造函数。这个对象也有proto属性,指向构造函数的原型对象。

隐士原型:每一个对象都有一个—proto——(隐士原型)属性,指向该对象的构造函数的原型对象。

#####2.原型链

原型链:实例与原型的链条,就是让一个实例继承所有的对象。

js中的对象都有一个—proto——(隐士原型)属性,指向该对象的构造函数的原型对象,即func .prototype。

原型对象也有一个—proto—属性,指向创建它的函数对象的原型对象。func.prototype._proto__= Object.prototype。

一直这样下去,直到null为止,这个链条才结束。Object.prototype._proto__ = null

js中一切皆为对象,但是没有class(类),所以要实现面向对象编程,是通过基于原型来实现的。