构造函数也能创建对象,
但是书上一定说什么用原型继承来创建对象,
但是实际上我看了,也是用构造函数来创建了对象,
只是多了个prototype的属性,我看不出来原型很构造函数的区别,书上说原型是个对象,用这个对象的继承来创建对象速度会快,
高人指点,原型和构造函数区别到底是什么?

解决方案 »

  1.   

    原型和构造函数是不一样的,应该是两个不同的概念。
    在javascript中所有的函数、对象都有原型对象,包括构造函数也有原型对象(函数在js中也是对象)。原型式集成的原理是:对象的构造函数可以从其他对象中继承方法,它创建出一个原型对象后,所有其他的新对象都可以基于这个原型对象来构建。而整个过程都是通过prototype这个属性来实现的。
    p.s. 你读的是什么javascript的书啊,建议你读好一点js方面书, 推荐《精通javascript》,John Resig写的,jquery的创始人。
      

  2.   

    LZ所谓的构造函数创建对象是什么意思直接在构造函数里面写this.xxx = XXX??
      

  3.   


    就比如 function pen()
    {.......}然后 var pen1=new pen();
    这个意思
      

  4.   


    想问的是LZ拿这个构造函数和prototype进行什么对比??
    使用prototype是
    function pen()
    {.......}pen.prototype.xxx = function (){};var pen1=new pen();
    只有和
    function pen()
    {
       this.xxx = function (){};
    }var pen1=new pen();
    才有可比性
      

  5.   

    function pen()
    {
    this.xxx = function (){};
    }

    以上应该称为构造函数吧,那么prototype因该是原型吧,这两个有什么区别?
      

  6.   

    pen.prototype.xxx = function (){};
    这样写对吗?
    左边是属性,右边是构造函数吧?
      

  7.   

    为pen的实例化对象pen1分配一个叫xxx的属性,该属性是个函数:function pen()
    {
    this.xxx = function (){};
    }var pen1=new pen();在pen的原型prototype中增加一个叫xxx的属性,该属性是个函数,pen1为pen的实例化对象,继承了xxx属性:function pen()
    {.......}pen.prototype.xxx = function (){};var pen1=new pen();
      

  8.   

    2个概念差太多了,建议LZ去看看prototype原型的介绍
      

  9.   

    用例子说明
    function pen()
    {
    //通过构造函数赋值,只是单纯的在该实例化对象上增加一个属性,各个实例化对象的该同名属性各不相同
    this.xxx = function (){alert("xxx")};
    }//yyy通过prototype赋值,实例化pen后的对象(pen1,pen2)的yyy属性都是同一个函数,但是作用域不同
    pen.prototype.yyy = function (){alert(this===pen1)};var pen1=new pen();
    var pen2=new pen();pen1.xxx();//xxx
    pen1.yyy();//truepen2.xxx();//xxx
    pen2.yyy();//falsealert(pen1.xxx === pen2.xxx);//false
    alert(pen1.yyy === pen2.yyy);//true