对象是一些属性和方法的集合。下面用一个简单的例子来帮助理解一下什么是对象及与对象有关的一些概念。例如我们一个人,就是一个对象,那么:
属性与方法:人有名字,有身高体重等特征,这些特征我们称为对象的属性。人能说话,能走路,这种能力我们称之为对象的方法。
私有方法与公共方法:一个人在学习了编程语言之后可以写程序,在学习了外语之后可以当翻译,这种个别对象才有的能力我们称之为对象的私有方法。反之,上面说话,走路等人人都具备的方法,称之为对象的公共方法。
封装:同样的两个人学习了编程语言,虽然都可以写程序,但由于是两个不同的对象,往往在写程序上是有差别的。对象的某些数据和代码可以是私有的,不能被外界访问,称之为封装。
继承:继承本是类里面的概念。继承是指子类通过继承(extends)父类,从而获得父类的属性与方法(私有属性和方法除外)。这就如一株大树,通过继承层层叠进,使最终的程序层次清晰而又功能强大。由于 JavaScript 语言没有类的概念,因此其本身并不直接提供继承功能,但现在有不少人和一些 JavaScript 框架,都在尝试让 JavaScript 具有继承的能力。
多态:多态是指不同事物具有不同表现形式的能力。多态机制使具有不同内部结构的对象可以共享相同的外部接口,通过这种方式减少代码的复杂度。遗憾的是,同继承一样,JavaScript 也不支持多态这一 OOP 中非常重要的概念。当然也有不少人和 JavaScript 框架尝试着间接实现 JavaScript 的多态性。
鉴于篇幅及本教程的宗旨,关于对象的一些基本概念简单描述到此为止。面向对象编程是一门专门的学科,感兴趣的同学可以另外阅读关于 OOP 专门的著作。