function A(){
this.a="a";
this.b="b";
this.c="c";
}
var A={
   a:"a",
   b:"b",
   c:"c",
}
这两种初始化的方法有什么不一样,(除了后期的调用一个不要初始化一个要初始化的)

解决方案 »

  1.   

    这两根本不是一个东西嘛..怎么比较呢..一个是构造函数,一个对象直接量!
    构造函数是用来创建对象实例的,相当于一个工厂!
    可以创建N个对象!
    function A(){
    this.a="a";
    this.b="b";
    this.c="c";
    }
    var a1=new A();
    var a2=new A();
    var a3=new A();
    ........
    这样a1,a2,a3...等等都是一个独立的对象
    var A={
       a:"a",
       b:"b",
       c:"c",
    }
    实际上相当于
    var A=new Object();//这里的new Object()相当于上面的new A();
      

  2.   


    被搞晕。。
      showPic.show("picT","pic","num","2000");
    //
    var showPic = {
    fatherClassName: "picT",
    picClassName: "pic",
    numClassName: "num",
    speed:"2000",
    show: function() {
    var fatherClassName = arguments[0] || this.fatherClassName;
    var picClassName = arguments[1] || this.picClassName;
    var numClassName = arguments[2] || this.numClassName;
    var speed = arguments[3] || this.speed;
    $("." + fatherClassName + " ." + numClassName + " li").click(function() {
    $active = $(this);
    clearInterval(play);
    rotate();
    return false;
    });
    $("." + picClassName + " a").hover(function() {
    clearInterval(play);
    }, function() {
    rotateSwitch();
    });
    var rotate = function() {
    picIndex = $active.text() - 1;
    $active.siblings().removeClass('on');
    $active.addClass('on');
    $("." + fatherClassName + " ." + picClassName + " li").hide();
    $("." + fatherClassName + " ." + picClassName + " li:eq(" + picIndex + ")").show();
    };
    var rotateSwitch = function() {
    play = setInterval(function() {
    $active = $("." + fatherClassName + " ." + numClassName + " li.on").next();
    if ($active.length === 0) {
    $active = $("." + fatherClassName + " ." + numClassName + " li:first");
    }
    rotate();
    }, speed);
    };
    rotateSwitch();
    },};
    用对象写的 被批斗了
    其实我到现在还没有搞明白
    那2个有什么去呗?
    对象 构造还是?
      

  3.   

    看来楼主面向对象的知识一点也无,类和对象的区别没搞明白,从js给你讲是讲不明白,直接讲面向对象的基础知识:
    类就是一种东西,比如说电脑
    对象是一个东西,比如说你那台电脑.
    你那台电脑就是电脑那个类的一个对象,这样明白了么?
    你那台电脑怎么来的?是按照电脑这种东西的制造过程制造的吧.把这个过程看做构造函数,就理解你的问题了
    可以通过制造电脑的过程制造无数电脑,也就是说可以根据构造函数A构造无数个A的对象,而var A={
       a:"a",
       b:"b",
       c:"c",
    }只是一个和构造函数A构造的对象拥有相同属性的对象而已
    就好比你用一个过程A构造了一台电脑a,但别人用另外的方式B制造了与a完全相同的电脑b,但是拿电脑b与制造电脑的过程A来对比,有可比性么?
      

  4.   


    迷糊。
    function showPic(a, b, c, d) {
    this.fatherClassName = a;
    this.picClassName = b;
    this.numClassName = c;
    this.speed = d;
    }showPic.prototype={
    show: function() {
    var fatherClassName =this.fatherClassName;
    var picClassName =  this.picClassName;
    var numClassName =this.numClassName;
    var speed =  this.speed;
    $("." + fatherClassName + " ." + numClassName + " li").click(function() {
    $active = $(this);
    clearInterval(play);
    rotate();
    return false;
    });
    $("." + picClassName + " a").hover(function() {
    clearInterval(play);
    }, function() {
    rotateSwitch();
    });
    var rotate = function() {
    picIndex = $active.text() - 1;
    $active.siblings().removeClass('on');
    $active.addClass('on');
    $("." + fatherClassName + " ." + picClassName + " li").hide();
    $("." + fatherClassName + " ." + picClassName + " li:eq(" + picIndex + ")").show();
    };
    var rotateSwitch = function() {
    play = setInterval(function() {
    $active = $("." + fatherClassName + " ." + numClassName + " li.on").next();
    if ($active.length === 0) {
    $active = $("." + fatherClassName + " ." + numClassName + " li:first");
    }
    rotate();
    }, speed);
    };
    rotateSwitch();
    },
    }
    楼上的-,-能详细指点下么? 或者
      

  5.   


    你的意思是不合适 var a{} 定义的 相当于function A() new的一个实例?
      

  6.   

    没问题啊。
    你不是说我的电脑相当于电脑类中的一个么?
    用var 的不就是一台电脑么?
    用function 的不就是一个电脑类吗?
    是这意思么?
      

  7.   


    没有关系的东西,var a={} 不是function A()的实例,因为它不是A构造出来的你可以理解为A构造出的东西还能用其他方式做出相同的东西{}配置对象,是js里面直接写对象的方式
    var a={} 相当于 var a=new Object();
    var a={a:"a"} 相当于var a=new Object();a.a="a";
      

  8.   

    更好的做法是showPic.prototype.show = function() {
     //...
     //...
    }
    采用默认的prototype,然后再往里面添加东西。否则(new showPic).toString()这种最基本的操作都没有。如果觉得写得代码不够多,toString()这种自己写也无所谓。
      

  9.   

    其实我明白你的意思。
    像上面的 
    var a=new showPic (1,1,1,1)
    中 a是 showPic的一个 实例么。
    这个我懂。
    但我想知道
    我帖的2段 代码都实现了同一个功能,有什么区别?
      

  10.   

    第一段采用默认的prototype,就是Object.prototype,可以使用Object.prototype里面的所有properties。
    第二段指定了一个prototype,里面只有一个property,就是show。
      

  11.   

    区别就在第一段代码 showPic已经是一个对象变量,可以调用其属性和方法
    而第二段代码showPic是构造函数,可以构造多个不同的对象
    具体差别你从面向对象的知识上去找,或者自己写写控件,看看你的第一种方式能写出控件来么?
      

  12.   

     自己看看上面的内容再做结论吧
    我写一个对象
    var obj={a:'a'};
    function A={this.a="a";}
    var a=new A();
    obj与a有相同的成员,只是构造方式有差别,但能说obj是A的实例么?
      

  13.   


    这个明白。a才是A的实例。
    obj是与a一样有相同属性的而已原理已经搞明白了。
    但在后期的使用上面,有什么问题?