<script language="JavaScript" type="text/javascript" isDebug="true">
function foo(){
foo.abc = function(){
alert("foo.abc");
}
this.abc = function(){
alert("this.abc");
}
abc = function(){
alert("abc");
}
def = function(){
alert("def");
}
var abc = function(){
alert("var abc");
}
}
foo.prototype.abc = function(){
alert("pro.abc");
}
foo.prototype.def = function(){
alert("pro.def");
}
foo.abc = function(){
alert("foo.abc");
}

var f = new foo();
f.abc();
f.def();
foo.abc();
def();
abc();
</script>请说一下结果很原因  谢谢~~~

解决方案 »

  1.   

    <script language="JavaScript" type="text/javascript" isDebug="true">
    function foo(){
    foo.abc = function(){//当前类的fun,只能通过类名调用
    alert("foo.abc");
    }
    this.abc = function(){//当前对象的fun通过new出的对象调用
    alert("this.abc");
    }
    abc = function(){//一般是定义了一个全局fun,但在这个作用域的后面你定义了var abc,这样的话第一个也会是局部的。
    alert("abc");
    }
    def = function(){//定义一个全局fun
    alert("def");
    }
    var abc = function(){//定义一个局部fun
    alert("var abc");
    }
    }
    foo.prototype.abc = function(){//定义一个原型链fun,在对象上查找不到指定fun时去原型链继续查找
    alert("pro.abc");
    }
    foo.prototype.def = function(){//原型链fun
    alert("pro.def");
    }
    foo.abc = function(){//个人感觉这个和写在里面的那个没什么区别。不一定准确
    alert("foo.abc");
    }var f = new foo();
    f.abc();
    f.def();
    foo.abc();
    def();
    abc();
    </script>
      

  2.   

    恩 有点理解了  主要是abc和var abc  
    谢谢~~~