OOP:Object Oriented Programming;面向对象程序设计
js也是支持面向对象的
定义一个对象的最简单的方法
var car = {color:"red",
drive:function() {
alert(this.color + " car moved")
}
}
通过构造函数创建一个新对象
function Car() {this.color = "red"
this.drive = function(){
alert(this.color + " car moved")
}
}
var car = new Car()
car.drive()
面向对象三大特征:封装、继承、多态基于封装,引出了js如何创建对象(class、function、原型+闭包创建私有变量等)。这个java和js都差不多
基于继承,引出了js继承的一些知识点,如extends、super、重写重载、abstract(typescript)、interface(typescript)。js主要是基于原型继承,而java主要是基于extends
多态存在的三个必要条件。重写(继承)、重载、向上转型:其中重写,js支持。重载js不支持,可以通过额外处理来支持向上转型,因为js是弱类型语言,不支持数据类型,ts支持(编译阶段)
也就是说对于多态的支持,目前js只支持一种。
总的来说 js的面向对象支持还没有java语言那么丰富严谨,正是因为这些宽松语法,也让js变得更加有趣。但是面向对象oop的思想是一致的。因为oop思想不是固定语言的特性,而是一种思想。随着js不断的更新迭代,相信其语法特性也更加丰富和严谨。
后话:js目前的发展趋势,好像不在跟随传统语言的oop,有点往函数式编程的路上转向