function cls1()
{
    this.a=1;
}
function cls2()
{
}
var x=new cls2;
cls2.prototype.a=1;
var y=new cls2;
alert(x.a);
alert(y.a);
----------------------------------------function cls1()
{
this.a=1;
}
function cls2()

}
var x=new cls2;
cls2.prototype=new cls1;
var y=new cls2;
alert(x.a);
alert(y.a);说下两者的不同,说明运行机制,谢谢。

解决方案 »

  1.   

    不太理解二楼的打的比方
    第一个prototype指向的是同一对象?
    第二个prototype在两次new的中间改变了指向?
      

  2.   


    就是说cls2.prototype=new cls1;
    改变了内存地址导致的。
      

  3.   

    第一个prototype指向的是同一对象?
    个人认为是
    第二个prototype在两次new的中间改变了指向?
    个人认为是
      

  4.   

    javascript中的new操作符执行了神马?
    1.创建一个对象,并且将构造函数中的this指向该对象
    2.将构造函数的prototype属性的所有属性、方法复制一份加到第一步中创造的对象。
    显然,横线下面那段代码,你第一次new的时候prototype神马都没有,当然神马都不复制。
    之后你new了第一个出来,具体new做了神马,请回放前三句话。
    然后,第二个函数的prototype就指向了new出来的第一个函数,之后你再new第二个函数的时候,就继续回放前三句话。
      

  5.   


    貌似第四句往后我看着都晕。
    只看前三句吧。
    然后遇到new就按照前三句的分析一下,应该可以理解。