本帖最后由 hwoarangzk 于 2010-04-22 08:46:53 编辑

解决方案 »

  1.   

    js的对象都有一个构造函数
    alert((1).constructor)
    alert((false).constructor)
    alert(('').constructor)var 对象 = new 构造函数();创建对象的第一步就是执行其构造函数。
      

  2.   

    将变量放在函数中访问,就取到命令空间的作用
    (function() {
        var a = 1;
        var b = 2;
        ....
    })();你可以参考一下js比较流行的几个框架的封装,比如jquery。
      

  3.   

    1.用了大写就不对了。这里是javascript匿名类实例化的写法(java也有相同用法)
    2.
    function Test() {
        // 这里可以看成是构造函数所以肯定是执行的}
    3.完全没有问题
    4.不可行。首先javascript为了避免变量冲突,每个js文件都应该在外面套一层
    (function(){
        //这里写代码,这个Index在其他的js文件中将不能引用。
         var index = 1;     // 不用var,代表所有文件中都可以引用。所以,一般做法是将类不用var,暴露在外面。不想暴露的用var限制
         Test = function() {};})();
    其次,javascript中间没有命名空间这个功能,但是可以模拟实现
    (function(){
    net = {};net.Test = function() {};})();// 其他js文件或者html中
    var obj = new net.Test();
      

  4.   


    var XX = {}; //XX为命名空间名称
    XX.fun = function(){ //你的函数名
       alert("x");
    };
    XX.fun(); //调用
      

  5.   

    这段代码容易让人误解。你必须知道,
    第一,js可以定义匿名函数,
    第二,function关键字定义的东西可以,也只有其才可以new出新的object。
    你的代码实际上是定义了一个匿名函数,而后用这个函数new出一个新的object。目前的js没有namespace的概念,所以,目前namespace在js里,实际上是用object包裹一遍来实现的,比如
    var Douban={}; //Douban实际起到了类似于namespace的作用
    Douban.func=function(){};
      

  6.   

    这种定义方法比较无聊,我们为什么用class或者prototype来造对象?无非是因为这些class或者prototype要使用很多次,是所谓的“模具”,而你例子里的这种方式,实际上“模具”被匿名了,也就是只能是用一次,那又是何必,不用模具,直接造对象不行吗?
    var obj={};
    obj.prop1=1;
    obj.func1=function(){};