prototype 可以有好多有优化实现方法
http://blog.csdn.net/liuqiwen0512/article/details/8089690
在 JavaScript 中,每个函数对象都有一个默认的属性 prototype,称为函数对象的原型成员,这个属性指向一个对象,称为函数的原型对象,当我们每定义了一个函数的时候,JavaScript 就创建了一个对应的原型对象,也就是说,当我们定义一个函数的时候,实际上得到了两个对象,一个函数对象,一个原型对象。原型对象是一个特殊的对象,函数的 prototype 成员指向它的原型对象。
可以通过函数对象的 prototype 成员取得这个原型对象的引用。
下面定义一个函数对象 Person,然后通过 prototype 来取得它的原型对象。然后在它的原型对象上定义了一个方法。
function Person() { } Person.prototype.showPerson = function() { alert( "Person Object."); } var alice = new Person(); alice.showPerson();
这个原型对象上定义的成员将用来共享给所有通过这个函数创建的对象使用。相当于 C# 中的实例方法,对象,函数和原型在内存中的关系如下图所示