Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象。但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class
(类)。 ----摘自阮一峰老师的博客
当然现在的es6中已经有了class,去声明一个类,让js看上去更像是一个面对对象编程的语言
那么问题来了什么是面向对象呢?其实js是有很多种写法的,我们平时一般写的程序都是面向过程式的,就像这样
var a = 1; function show(opt){ alert(opt); } show(123); for(var i=1;i<10;i++){ // }
其实面向对象的程序,我们也是经常在用,就像这样
var arr = new Array(); //这是一个数组对象,当然我们平时一般都写成[]的形式,其实是一样的,[]只不过是new Array()简写罢了 var date = new Date(); //这是一个日期对象 //对象上有属性和方法 arr.length //对象的属性 arr.push() //对象的方法 arr.sort() date.getDate() //对象的方法
以上,就是我们经常用到的面向对象的程序的用法,只是我们只拿来用,而不知道其中所实现的原理罢了,我们称之为系统对象
面向对象不过是另一种编程的方式而已,那么为什么要用面向对象编程呢,那是因为它相对于我们面向过程编程的写法,有它的一些优点
1,抽象:抓住核心问题,换言之就是就是把相同的东西抽离出来
2,封装:只能通过对象来访问方法或者属性,也就是有一定的规范,而不是什么情况下都可以使用的,就是防止我们滥用一些方法或者属性
3,继承:从已有的对象中继承出一个新的对象,我认为这是最重要的,可以很大程度的复用代码,提交性能,而又不相互影响
4,多态:多对象的不同形态,也就是在不同的场景下,同一个接口可能会有不同的作用,有不同的形态,也是可以达到复用代码的目的,当然因为js是弱类型语言,所以,可能不太明显
时间: 2024-10-01 23:01:22