js的prototype给js提供了类的扩展以及继承;
通过prototype可以扩展当前的类,这个容易理解,可以通过该类的实例化对象来调用扩展的方法;
当调用当前类的某一方法或者成员的时候,如果该类没有定义,那么会去查找该类的prototype;而由于每个对象都默认有一个prototype,这个prototype默认为基类Object,Object的__proto__ 字段为null,因此,如果没有定义该类的prototype,那么此调用结果就会返回空;反之,可以为当前类通过定义prototype字段进行扩展,也可以定义其prototype为某一特定对象,那么当访问当前类的时候,就会通过该类的prototype查询到它的上一层,从而达到继承的目的;
js不同于一般面向对象,不仅可以通过prototype扩展类的实例对象,也可以直接扩展类的成员,此扩展类似于给当前的类添加成员,添加的成员归类所有,类似于静态成员,然而其不同于C++的在于,静态的成员只能通过类来访问,而不能通过类的对象来访问。
其区分的例子可以参考jquery的jquery.fn.extend()以及jquery.extend(),毕竟jquery是对js的封装。