//foo(1, 2);
a:'never-online'
b:'BlueDestiny'//foo2(1, 2);
a:'never-online2'
b:'BluDestiny2'对象拦截的应用
换成call的写法如下:<script type="text/javascript">
//<![CDATA[ function bar(a, b) {
alert(a);
alert(b);
} function foo(x, y) {
x = 'never-online';
y = 'BlueDestiny';
bar.call(null, x, y);
} function foo2(x, y) {
var x = 'never-online2';
var y = 'BluDestiny2';
bar.call(null, x, y);
} foo(1, 2); //目测foo函数里执行bar函数的打印结果 a=?, b=?
foo2(1, 2); //目测foo2函数里执行bar函数的打印结果 a=?, b=? //]]>
</script>
a:'never-online'
b:'BlueDestiny'//foo2(1, 2);
a:'never-online2'
b:'BluDestiny2'对象拦截的应用
换成call的写法如下:<script type="text/javascript">
//<![CDATA[ function bar(a, b) {
alert(a);
alert(b);
} function foo(x, y) {
x = 'never-online';
y = 'BlueDestiny';
bar.call(null, x, y);
} function foo2(x, y) {
var x = 'never-online2';
var y = 'BluDestiny2';
bar.call(null, x, y);
} foo(1, 2); //目测foo函数里执行bar函数的打印结果 a=?, b=?
foo2(1, 2); //目测foo2函数里执行bar函数的打印结果 a=?, b=? //]]>
</script>
//<![CDATA[ function bar(a, b) {
alert(a);
alert(b);
} function showSomething(a) {
alert(a);
} function foo(x, y) {
x = 'never-online';
y = 'BlueDestiny';
bar.apply(null, arguments);
} function foo2(x, y) {
showSomething(x); //输出x=?
var x = 'never-online2'+x;
var y = 'BluDestiny2'+y;
bar.apply(null, arguments);
} foo(1, 2); //目测foo函数里执行bar函数的打印结果 a=?, b=?
foo2(1, 2); //目测foo2函数里执行bar函数的打印结果 a=?, b=? //]]>
</script>
showSomething(x); //输出x=?
x=1,这个时候是传递进来的第一个参数
//var x = 'never-online2'+x;
x的值重新赋值,'never-online2'+x,此时后面的x在被重新赋值前,所以还是1
x和arguments的x作用范围是一致的,是同一个值,这是JS和别的语言的不同之处^^
x=never-online21
y同理,y=BluDestiny22
这个具体怎么表述呢,大意就是在JS中,
重复定义的同一个作用范围的变量名的值以最后的值为准(同一片内存)
也就是重复定义的后面的将覆盖前面的值、类型(弱类型语言的好处)等
Javascript里面的变量可以多次重量申明赋值。。[It is legal and harmless to declare a variable more than once with the var statement. If the repeated declaration has an initializer, it acts as if it were simply an assignment statement. ]
//<![CDATA[ function bar(a, b) {
alert(a);
alert(b);
} function foo(x, y) {
x = 'never-online';
y = 'BlueDestiny';
bar.apply(null, arguments);
} function foo2(x, y) {
var x = 'never-online2';
var y = 'BluDestiny2';
bar.apply(null, arguments);
} foo(); //目测foo函数里执行bar函数的打印结果 a=?, b=?
foo2(1, 2); //目测foo2函数里执行bar函数的打印结果 a=?, b=? //]]>
</script>
<script type="text/javascript">
//<![CDATA[ function bar(a, b) {
alert(a);
alert(b);
} function foo(x, y) {
x = 'never-online';
y = 'BlueDestiny';
bar.apply(null, arguments);
} function foo2(x, y) {
var x = 'never-online2';
var y = 'BluDestiny2';
bar.apply(null, arguments);
} foo(1); //目测foo函数里执行bar函数的打印结果 a=?, b=?
foo2(1, 2); //目测foo2函数里执行bar函数的打印结果 a=?, b=? //]]>
</script>
[align=center]==== 思想重于技巧 ====
[/align]
.
贴子分数<20:对自已的问题不予重视。
贴子大量未结:对别人的回答不予尊重。
.
呵呵,的确有点忙,所以在群里也很少八卦了,很少去打winter了,都老老实实做事呢,你在深圳的感觉如何?