ClassA=function(){ this.a='a'; this.b='b'; this.method=function(){ alert(1) } } ClassA.prototype.method=function(){ alert(2) } var a=new ClassA(); a.method();
这时候会alert(1) 还是alert(2)呢??答案是alert(1)
JS中的方法会首先在实例中查找方法method,如果没有在父类中查找,如果没有在原型中查找。
我们定义JS的类时,往往在构造函数中定义属性,而在原型中定义方法,这样保证每个实例内存中都只有一个方法的引用。所以一般不会按照alert(1)的方式定义方法。