用javaScript来模拟强类型语言中类的概念,比如java中的类;
类的定义:具有相同属性和方法的一类事物的统称。
在js中类的所有实例对象都从同一个原型对象上继承属性。因此原型对象是类的核心。
类创建对象是通过构造函数的,原型虽然是类的核心,但是构造函数是类的外在表现。
原型对象是类的唯一标识:当前仅当两个对象继承自同一个原型对象时,他们才是属于同一个类的实例。而初始化对象状态的构造函数则不能作为类的标识,因为两个构造函数的prototype属性可能指向同一个原型对象。那么这两个构造函数创建的实例是属于同一个类的。
构造函数的名字通常用做类名。比如有一个对象o,我们想知道o是否是Person对象,可以这样写: o instanceof Person//如果o继承自Person.prototype,则返回true;
java中的类包括类方法,类字段,实例方法,实例字段;
js用三种对象的属性来模拟实现
1.构造函数对象
构造函数(对象)为js的类定义了名字。任何添加到这个构造函数对象中的属性都是类字段和类方法。
2.原型对象
原型对象的属性被类的所有实例所继承,所以原型对象上的属性作为实例方法,实例字段来实现;
3.实例对象
类的每个实例都是一个独立的对象,直接给这个实例定义的属性是不会为所有的实例对象所共享的。