定义在prototype的公有属性和方法,需要new一个实例之后才能使用。如:
function Foo() {
getName = function() {
alert(1);
}
}
Foo.prototype.getName = function(){
alert(2)
}
Foo.getName = function(){
alert(3)
}
此时如果直接运行Foo.getName();方法的话,输出3的。而如果new一个Foo的实例,再执行getName()方法的话,就会输出2。而Foo上的getName实际上是一个未经过声明的全局变量,在全局范围内直接执行getName()就可以输出1。
var a = new Foo;
a.getName(); // 2
Foo.getName(); // 3
getName(); // 1