更正一个地方,手误:“于是找a.__prototype__既Function.prototype”应该为:于是找a.__proto__既Function.prototype

解决方案 »

  1.   

    再次更正,郁闷~~··iA.say();
    /*
    iA本身没有say方法(构造中没有,自己也没有定义过),
    于是找iA的prototype,没有找到,
    于是找iA.__proto__即A.prototype,也没有找到,
    于是再找A.prototype.__proto__即a.prototype,哇,发现了hi,于是调用它,停止查找
    所以,这里调用的是A.prototype.say
    输出:A
    */应该为:
    iA.say();
    /*
    iA本身没有say方法(构造中没有,自己也没有定义过),
    于是找iA的prototype,没有找到,
    于是找iA.__proto__即A.prototype,哇,发现了say,于是调用它,停止查找
    所以,这里调用的是A.prototype.say
    输出:A
    */
      

  2.   

    只能怀疑自己治学不严谨! - -!再次更正:iA.bad()的注释部分iA本身没有hi方法应为iA本身没有bad方法
      

  3.   


    iA.hi(); 
    /* 
    iA本身没有hi方法(构造中没有,自己也没有定义过), 
    于是找iA的prototype,没有找到, 
    于是找iA.__proto__即A.prototype,也没有找到, 
    于是再找A.prototype.__proto__即a.prototype,仍然没有发现, 
    继续查找a.prototype.__proto__即Object.prototype,哇,发现了hi,于是调用它,停止查找 
    输出:hi Object 
    */ a.hi(); 
    /* 
    a本身没有hi方法(构造中没有,自己也没有定义过), 
    于是找a的prototype,没有找到, 
    于是找a.__prototype__既Function.prototype,哇,发现了hi,于是调用它,停止查找 
    输出:hi Function 
    */ 
    我就想问一个问题
    a.__prototype_到底是什么,!??我用IE6.0是没定义undefined,你前后说的有矛盾
    而且A.hi()也是输出的是 hi Funciton
    这个你没解释好
    new A() 或是new a()
    他得到的其实就是一对象,如果他的原型里没有这个方法,他就直接找上一层的prototype也就是Object的hi()方法.如果有就直接调用当前的 而A 与a是一个函数对象.如果他们没有hi()方法,输出的也会是hi object
      

  4.   

    而且我实了后发现
    <script type="text/javascript">//Function.prototype.hi = function(){alert('hi Function');}
    Object.prototype.hi = function(){alert('hi Object');}var a = function(){
        this.txt = "a";
    }
    a.prototype = {
        say:function(){alert('a');}
    }
    var A = function(){};
    A.prototype = new a();
    A.prototype.say = function(){
        alert('A');
    }
    var iA = new A();//iA是A的实例,iA.__proto__ === A.prototype
    var iB = new a();//iB是a的实例,iB.__proto__ === a.prototype
    //alert(typeof a._prototype_)
    iA.hi();
    iB.hi();
    a.hi()
    A.hi()
    </script> 
    得到的全是 hi Object 
    哈哈````
     只能说明对象的关系搞的不是很清楚
      

  5.   

    Meteoric_cry同学,__proto__是SpiderMonkey的JavaScript引擎里的私有属性(JScript中木有),用于指向到实例的instanceof对象的prototype。至于你说的其他的测试结果,在理解本文后应该会看得很清楚的。另,因为本文中存在许多笔误,请转到:http://www.v-ec.com/dh20156/article.asp?id=157查看,欢迎讨论! ^_^