function a(){ return this.test(); };
a.prototype.test = function(){ return { a:"12345" }}
var obj = new a();
alert(obj.test);

如果在函数a中不return这个对象,obj会不意外地继承test方法,也就是成为a.prototype的一个指针。但是如果return了,new出来的对象将断开与prototype的链接,变成了一个毫不相干的玩意。
请各位童鞋注意这个问题。

其实,js就不是我们通常所讲的面向对象语言,它没有类的概念。现在的所有的实现js的oo的写法,都是基于js的基于原型继承的面相对象的特性,按照一般概念上的类的写法仿制的。如果又按照一般概念上的类和对象的特点去理解使用它的话,掉到坑里是迟早的事情。

希望各位童鞋在学习js的时候,注意力要放在原型继承上,并在此基础上来考虑new的问题。