qq空间好慢,把我的几个文章拿过来:
 
 
题目如下:

问题来自: 中国狐(
[url]www.foxjs.cn[/url] ) 详细出处参考: [url]http://www.foxjs.cn/article.asp?id=607[/url]


我的分析结果----->
不运行看看什么结果,分析下
1.采用逐步扩展变量的方法分析:
看这个:

结果肯定是@@@@@了。
2.放到函数里面赋值

在执行foo();之前是什么也不会输出的,因为还没有对abc赋值,也就是函数引用为null
如果这样,

就会输出@@@@@了。
3.看看构造函数
function foo()
{
this.abc = function(){alert('xyz')}------有了this就成为了构造函数
abc = function(){alert( '@@@@@')};--window.abc
}
foo();//产生一个匿名对象?然后销毁?
abc();

上面只是当作了普通的函数执行了赋值语句。
结果:@@@@@
再看如下:

结果:xyz   @@@@@

再看

结果:xyz   def   @@@@@
4.

结果和上面的相同。
看下面的:

结果还是一样。
function foo()
{
foo.abc=function(){alert('def');};
this.abc = function(){alert('xyz')}
abc = function(){alert( '@@@@@' )};
var abc = function(){alert('$$$$$$')}
}
var f=new foo();
foo.abc = function(){alert('123');}---但是在new foo()调用之后,而foo.adb()调用之前重写函数,结果受影响
f.abc();
foo.abc();
abc();

结果:xyz  123  @@@@@
5.原型对象prototype

结果:456
虽然foo()内部没有明确的定义方法abc()但是我们发现好像foo类定义了一个abc()方法似的。---等于我们为foo类的父类添加了一个可继承的方法
下面重写方法覆盖父类中的方法

结果:xyz