解决方案 »
- 这段代码是什么意思啊
- js新手求教(图片滚动问题)
- 那位大哥给个flash网站的源码参考一下
- javascript数组 如何传递给 C#数组
- javaScript中insertBefore标签无法显示
- iframe中的加入收藏夹按钮,怎么才能把父页面的地址加进去?
- 怎样得到span的className?
- 如何在用window.open打开新窗口时给URL传入超过1024的参数?
- 再请教!显示子窗口时,不能对父窗口操作,怎么实现呢?
- 在js中没有函数可以去掉字符串两端的空格符-在线等待
- js放大镜或css样式放大镜
- 在jquery 下错误提示document.selection.CreateRange().text;
x:point.x 是一个对象的赋值,传递地址。
y:point.y+1 是一个表达式的赋值,最终是把计算得出的表达式结果作为即时值传递赋给Y
这和
VAR A=1;
VAR B=A+1; 的结果是 B=2,而不是B=(A+1)这个新对象一样。
var point = {x:3,y:1}
var circle = {x:point.x,y:point.y+1,redius:point}
point.x = 5;
alert(point.x);
alert(circle.x);
alert(circle.redius.x);
</script>把y 变为x后 第二个alert的值仍没有受到point.x = 5 的影响
point.y = 5;
var circle = {x:point.x,y:point.y+1,redius:point}
alert(point.y);
alert(circle.y);
alert(circle.redius.y);
执行顺序问题 定义circle时circle.y获取point.y成功就直接赋值,而redius是一个指针,每次调用时都会去读取当前point
表达式的结果是要看进行的何种运算,象point.y+1 这种表达式,是种数学运算,则返回的结果就是一个数字结果,不是跟point.y有关的对象。
其它类型的表达式,结果可能返回对象,但这个很明显不是。
var a=1;
b=a;
a=2;
alert(b);
纯粹的值传递而已