js面向对象篇(一)

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是弱类型语言,所以,可能不太明显

 当然,说这么多,可能大家还是云里雾里,所以,我建议大家多写面向对象的程序,只有这样你才能真切的感受到面向对象的好处。

posted @ 2017-11-26 18:24  阿弥陀佛么么哒!  阅读(528)  评论(0编辑  收藏  举报