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);说下两者的不同,说明运行机制,谢谢。
{
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);说下两者的不同,说明运行机制,谢谢。
第一个prototype指向的是同一对象?
第二个prototype在两次new的中间改变了指向?
就是说cls2.prototype=new cls1;
改变了内存地址导致的。
个人认为是
第二个prototype在两次new的中间改变了指向?
个人认为是
1.创建一个对象,并且将构造函数中的this指向该对象
2.将构造函数的prototype属性的所有属性、方法复制一份加到第一步中创造的对象。
显然,横线下面那段代码,你第一次new的时候prototype神马都没有,当然神马都不复制。
之后你new了第一个出来,具体new做了神马,请回放前三句话。
然后,第二个函数的prototype就指向了new出来的第一个函数,之后你再new第二个函数的时候,就继续回放前三句话。
貌似第四句往后我看着都晕。
只看前三句吧。
然后遇到new就按照前三句的分析一下,应该可以理解。