原型除了提供以上的特性之外,它还提供了一群同类实例对像共享属性和方法的机制 [也就相当于静态属性或静态函数,无论用构造函数创建了多少个实例对像,在原型上定义的属性和方法从头到尾只定义了一次,所有实例对像都共享使用这一个属性或方法 但并非和C++或JAVA的静态属性或静态函数的概念相同] 代码如下: function Class1(name){ this.name = name; } Class1.prototype.show=function(){ alert("name="+this.name); } var m1 = new Class1("jiangsk540"); var m2 = new Class1("毛狮子"); alert(m1.show===m2.show);//显示 true
动态给构造函数原型添加的属性或方法即可被先前建立的对像立即调用 如 代码如下: function Class1(name){ this.name = name; } Class1.prototype.show=function(){ alert("name="+this.name); } var m1 = new Class1("jiangsk540"); Class1.prototype.say=function(){ alert("Hi"); } m1.say()//调用成功 /* 注意:只有为构造函数的原型添加的属性或方法才能被已经创建的对像立即调用 如果是改变构造函数原型的引用那么就不能被已经创建的对像立即调用 */ Class1.prototype={newP:"jiangsk540"}; alert(m1.newP)//undefined