求教高手解决 急 先谢谢了 关于对象的 var p = new Point(1,2);//p(1,2)刚测试了,这句话不能这样理解。那我改怎么理解呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼主在写继承么call方法与apply方法都是javascript对象冒充继承的方法apply方法有两个参数用作this的对象和要传递给函数的参数数组如你的add.apply(p2,[5,6]);作用的动作应该是p2的3与数组的5相加,p2的4与数组的6相加你可以试试如果不对我们再研究 不对 不是3和5,4和6相加没有看到你的point方法应该是p2初始化后的x,y分别和5,6相加 var p3 =add.apply(p2,[5,6])此时p2的x和y分别为5和8,因为var p2= new Point(3,4); 把它初始化了 [5,6]数组作为参数传送给add方法,分别等于add方法的x和ynew this.constructor(this.x+x,this.y+y);时this.x和this.y就是p2的x和y,分别等于5和8,x和y分别为5和6this.x+x = 5 + 5 = 10;this.y+y = 8 + 6 = 14;alert(p3)时进行p3的this.toString方法{x+= 8; //10+=8;y+= 6; //14+=6;return '['+[x,y]+']'; //在alert(p3)时结果为[18,20]}需要注意的是add.apply方法的第一个参数是你要继承的对象,第2个参数是你要传送给add方法的数组, 数组中的元素就是add方法的两个参数,在这里分别为x,y对象冒充继承 alert(p2);//11,10不是你说的5,8啊 var p2= new Point(3,4); 得到了p2p2的x和y就已经是5和8了因为在point(x,y)里的this.x=x+2; //在这里已经被改变了 new Point(3,4); 3 + 2 = 5 this.x已经等于5了this.y=y+4; //在这里已经被改变了 new Point(3,4); 4 + 4 = 8 this.y已经等于8了而你说的alert(p2);是调用了p2的tostring方法x+=8; //这里的x是参数3y+=6; //这里的y是参数4所以结果是[11,10]不要把x和this.x,y和this.y混淆 谢谢gahaya 我已经弄清楚了,一直不知道alert(p)会调用toString方法 求一种网页视频播放器~~ 关层问题求解 [求助] ExtJs问题,同一个程序,在客户的机器上运行正常,在我自己的笔记本上错误成堆。 js单击事件出现脚本错误 有个下拉列表框,其中有一项值是”其它“,在下拉列表框的下面有三个文本框,当选择了下拉列表框中得”其它“时,下面得三个文本框就不让 如何使用JQuery给自定义属性赋值取值 窗口弹出问题 初学者提问:这个非常简单的程序运行不出结果?请教 层的相对定位怎么解决? 如何取得另一网页里<div id="data">...</div>中的内容?? 火狐FF支持execCommand吗? 点击鼠标变化背景图片
call方法与apply方法都是javascript对象冒充继承的方法
apply方法有两个参数
用作this的对象和要传递给函数的参数数组
如你的add.apply(p2,[5,6]);
作用的动作应该是p2的3与数组的5相加,p2的4与数组的6相加
你可以试试
如果不对我们再研究
没有看到你的point方法
应该是p2初始化后的x,y分别和5,6相加
此时p2的x和y分别为5和8,因为var p2= new Point(3,4); 把它初始化了
[5,6]数组作为参数传送给add方法,分别等于add方法的x和y
new this.constructor(this.x+x,this.y+y);时this.x和this.y就是p2的x和y,分别等于5和8,x和y分别为5和6
this.x+x = 5 + 5 = 10;
this.y+y = 8 + 6 = 14;
alert(p3)时进行p3的this.toString方法{
x+= 8; //10+=8;
y+= 6; //14+=6;
return '['+[x,y]+']'; //在alert(p3)时结果为[18,20]
}
需要注意的是add.apply方法的第一个参数是你要继承的对象,第2个参数是你要传送给add方法的数组, 数组中的元素就是add方法的两个参数,在这里分别为x,y
对象冒充继承
p2的x和y就已经是5和8了
因为在point(x,y)里的
this.x=x+2; //在这里已经被改变了 new Point(3,4); 3 + 2 = 5 this.x已经等于5了
this.y=y+4; //在这里已经被改变了 new Point(3,4); 4 + 4 = 8 this.y已经等于8了
而你说的alert(p2);是调用了p2的tostring方法
x+=8; //这里的x是参数3
y+=6; //这里的y是参数4
所以结果是[11,10]
不要把x和this.x,y和this.y混淆