var tfn = function () {
        tfn.prototype = {
            a: "aaaaaaaaa",
            b: "bbbbbbbb"
        }
    }请问如何访问tfn里的a??
以下方式都不行。
1、tfn.prototype.a 结果为undefined
2、var c=tfn.prototype;
   c.a             结果为undefined
3、var c=new tfn();  
   c.a             结果为undefined

解决方案 »

  1.   


       var tfn = function () {
            tfn.prototype = {
                a: "aaaaaaaaa",
                b: "bbbbbbbb"
            }
        }如果有实例化的代码 var c=new tfn();
    那么每次实例化一个对象,都会去改变tfn的prototype,你想干嘛?给你个参考    function tfn() {}  //定义这个函数,最好不要用 var tfn=function (){} 这两种方式还是有区别的.
    (function(){ //闭一下包,不闭也行
        tfn.prototype = {
                a: "aaaaaaaaa",
                b: "bbbbbbbb"
            }
        }
    })();
      

  2.   

        function tfn() {}  //定义这个函数,最好不要用 var tfn=function (){} 这两种方式还是有区别的.
    (function(){ //闭一下包,不闭也行
        tfn.prototype = {
                a: "aaaaaaaaa",
                b: "bbbbbbbb"
            };
        //} 不小心多了个括号....
    })();
    var c=new tfn();
    alert(c.a);
      

  3.   

    将prototype的赋值放在function的里面,都没执行function,赋值怎么能赋上呢?
      

  4.   


       var tfn=new Function();
        tfn.prototype = {
                a: "aaaaaaaaa",
                b: "bbbbbbbb"
            };
    var c=new tfn();
    alert(c.a);
      

  5.   

    5楼正解,为啥要放到function里面。
      

  6.   

    可以访问到是没有问题的 但是我不认同楼主的写法 当然我可能不了解楼主的想法是神马
    1、先说基于你的代码如何实现你的要求
    var tfn = function () {
            tfn.prototype = {
                a: "aaaaaaaaa",
                b: "bbbbbbbb"
            }
        }tfn();
    var newProto = new tfn();
    alert(newProto.a)
    2、个人意见
       楼主的代码中 只要执行过这个函数 其原型就会发生改变 有什么特殊用法非要让楼主这样更改原型链么?
      

  7.   


    var tfn = function () {
            tfn.prototype.a = "aaaaaaaaa";
        }var newProto = new tfn();
    alert(newProto.a)那为什么这样就行呢?
      

  8.   

    在此之前,从没见过这样写的!!!var tfn = function () {
            tfn.prototype = {
                a: "aaaaaaaaa",
                b: "bbbbbbbb"
            }
        }
    只是定义一个变量 tfn. 没有调用。当然结果是 undefined程序逻辑最基本的3点1、顺序
    2、条件
    3、循环
      

  9.   

    你这样new的时候 只是去改变了tfn的原型上的a属性 并没有对原型进行修改 所以你的原型上经过修改后是有a属性的 能访问到是必然的
      

  10.   

    var tfn = function () {
            tfn.prototype = {
                a: "aaaaaaaaa",
                b: "bbbbbbbb"
            }
        }而这种写法 你new的时候 把原型给改了 所以要想访问到a 要再new一次 
    换句话说 也要new两次才能够访问到a属性和b属性