js prototype求解

hckxzy 2011-01-05 03:32:34
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);

说下两者的不同,说明运行机制,谢谢。
...全文
116 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hckxzy 2011-02-28
  • 打赏
  • 举报
回复
可以通过操作值,还是操作引用来解释。
hckxzy 2011-01-05
  • 打赏
  • 举报
回复
很同意:兔子党监察科科长 的说法
Crazywa 2011-01-05
  • 打赏
  • 举报
回复

貌似第四句往后我看着都晕。
只看前三句吧。
然后遇到new就按照前三句的分析一下,应该可以理解。
Crazywa 2011-01-05
  • 打赏
  • 举报
回复
javascript中的new操作符执行了神马?
1.创建一个对象,并且将构造函数中的this指向该对象
2.将构造函数的prototype属性的所有属性、方法复制一份加到第一步中创造的对象。
显然,横线下面那段代码,你第一次new的时候prototype神马都没有,当然神马都不复制。
之后你new了第一个出来,具体new做了神马,请回放前三句话。
然后,第二个函数的prototype就指向了new出来的第一个函数,之后你再new第二个函数的时候,就继续回放前三句话。
Mr-Jee 2011-01-05
  • 打赏
  • 举报
回复
是改变了原型链

可以理解为这个对象的被父母抛弃了 然后被另外的家庭领养了
hckxzy 2011-01-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 boyhoodb 的回复:]
不太理解二楼的打的比方
第一个prototype指向的是同一对象?
第二个prototype在两次new的中间改变了指向?
[/Quote]
第一个prototype指向的是同一对象?
个人认为是
第二个prototype在两次new的中间改变了指向?
个人认为是

hckxzy 2011-01-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cj205 的回复:]
给你举个例子。
第一种情况
家里买了一个电视,
然后孩子正在看电视,这个时候给电视安装了有线电视
孩子可以用,父亲也可以用

第二种情况
家里买了一个电视
然后孩子正在看电视,这个时候家里买了新的电视(带有线电视的哟)
结果孩子的这个电视不能看有线电视,但是父亲的 可以~
[/Quote]

就是说cls2.prototype=new cls1;
改变了内存地址导致的。
boyhoodb 2011-01-05
  • 打赏
  • 举报
回复
不太理解二楼的打的比方
第一个prototype指向的是同一对象?
第二个prototype在两次new的中间改变了指向?
Mr-Jee 2011-01-05
  • 打赏
  • 举报
回复
给你举个例子。
第一种情况
家里买了一个电视,
然后孩子正在看电视,这个时候给电视安装了有线电视
孩子可以用,父亲也可以用

第二种情况
家里买了一个电视
然后孩子正在看电视,这个时候家里买了新的电视(带有线电视的哟)
结果孩子的这个电视不能看有线电视,但是父亲的 可以~

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧