Javascript严格来说不属于面向对象语言,因为他没有类似java中的class关键字来创建一个类,但是Javascript也可以很轻松的实现(模拟)面向对象的特性;
记住一点函数既是对象,对象也是函数;引用类型有对象,数组和函数。判断引用类型的方法通过instanceof关键字来实现;第一点:函数其实是通过Function构造函数来实现的;示例如下:
第二点:通过instanceof可以判断函数既是对象,对象既是函数;示例如下:
创建对象的2种基本方式:
1. 语法糖:(以对象字面量的形式创建对象)
以上方式是Javascript实现对象的语法糖,不推荐使用,不适合实现面向对象原理;
2. 通过构造函数来实现对象
对第二种创建对象的方式进行全面剖析,在剖析之前,希望大家先了解面向对象的基本概念,首先引入成员修饰符的概念,我觉得javascript对于成员修饰符大概可以分为2种:公用(public),私有(private);而在javascript中没有类似于public和private关键字来控制成员的访问权限;
代码如下:
上面代码涵盖了javascript中的公有(public)和私有(private)的特性。
公有(public)性:是指在其他类里面可以直接访问,如上面例子所示,classF1中的name属性是公有属性,所以在其他类(classF2)中可以通过实例化classF1访问到name属性;
私有(private)性:指在其他类中不能直接(注意直接)访问。严格来说是由于JS的函数作用域产生的这种特性,在Javascript中函数内的声明的属性不能被函数外部访问;所以age属性不能直接访问。可以通过调用公有方法间接访问属性age;