面向对象是一种编程思想,和具体的语言无关,如果一个语言可以支持面向对象的编程思想,那么我们就可以认为这个语言是面向对象的语言,JavaScript 就是一种面向对象的语言,只不过在以前,JavaScript 要使用面向对象的编程思想来编程有一点麻烦,ES 6 提供了很多语法糖加强了这一点。
面向对象是一种区别于面向过程的编程思想,这二者的区别在于功能的切入点,在面向过程编程的视角上俩看,他是一步一步地来完成一个功能,比如第一步干什么,第二步干什么,每一步可以给他封装成一个函数,这就是面向过程的编程思想,而面向对象则是把所有的东西都看成一个对象,思考的切入点是一个一个的对象,是把一切都看做对象。
这里举一个大象装冰箱的例子,按照面向过程的设计方式,大象装冰箱也就三步,第一步是把冰箱门打开,第二步把大象放进去,第三步把冰箱门关上,这种一步一步干的思想就是典型的面向过程的思想。这种面向过程的思想看似是很合理的,但是问题在于不利于拓展和维护,也不利于大型项目的开发。如果按照面向对象的思想来看,那么我们就可以把大象和冰箱看成两个对象,冰箱里面有一个装入方法,就是把一个东西装进去的方法,如果我们要把大象装进冰箱,实际上只需要调用冰箱的装入方法,把大象作为参数传入,就可以把大象装进冰箱。