如我有
function A(){
var b=4
this.a=3
this.aa=function(){alert(b)}
}
aa.prototype.ss=3
v=new aa()请问 v.prototype里的值和 A.prototype里的值有什么区别?
我想通过for in 输出prototype里的属性和方法  但没成功
请问能输出吗?

解决方案 »

  1.   

    v=new aa() 每当用 new 实例化一个方法时,该方法内部将this关键字指向新变量 aa,所有执行 v.prototype 出错 v is undefined。
    A.prototype 就不用我说了吧。内置的方法不能输出,
    自定义的行。
    for( var i in  Object.prototype ) alert( Object.prototype[i] );
    Object.prototype.toArray = function(){};
    for( var i in  Object.prototype ) alert( i + ' => ' + Object.prototype[i] );
      

  2.   

    v是实例,实例不存在prototype,所以你的想法“v.prototype里的值”是错误的,它只有通过原型链来访问A中原型里的属性。另外,你的代码里A和aa你是不是搞混了?
    <script>
    function A(){
    var b=4
    this.a=3
    this.aa=function(){alert(b)}
    }
    A.prototype.ss=3
    v=new A();for(i in v){
        document.write(i+'<br>');
    }
    </script>
    关于原型、原型链,可以参见:http://www.jslab.org.cn/?tag=prototypeChain