C#的类可以有静态方法和属性,可以类名或实例引用,并且是所有实例共享的。
JS中有类方法、对象方法,分别对应C#中的静态方法、实例方法。
此外JS中还有原型方法,通过给一个类的Prototype变量添加一个对象引用,动态的让该类的所有实例拥有属性和方法。
总之,一个类的prototype存储了类的特殊的静态方法和属性,可以动态的指定,类的实例共享这些成员,不能通过类名直接访问。
avascript中对象的原型属性的解释是:返回对象类型原型的引用。
最简单的用法,动态扩展类的方法和属性。
function People() { this.Jump=function(){ alert("I can jump"); } }
现在要扩充方法:
People.prototype.Run=function(){ alert("I can run,too"); }
好,测试下:
var p=new People(); p.Jump(); p.Run();
(ps:尽量将方法定义为原型方法,原型方法避免了调用构造函数时创建新的属性或方法,因此比较节省空间和时间)。