对象,在Java当中用的最多的,但是js也有这个概念。

  有了对象,处好了就可以结婚了(请容我慢慢道来别不信,处好了当然可以结婚)

  来来,我们先创建一个对象,

  创建对象的方法有各种各样的,你找对象的地方也不是各个地方嘛...咖啡厅、商城、甚至公交车上(神人)

  工厂方法:

  function girlFriend(){

    var obj=new obj;

    obj. name="aaa";

    obj.age=18;

    obj.getName=function(){

     return  this.name;

    }

  return obj;

  }

  构造函数模式:

  function girlFirend(){

    this.name="lick";

    this.age=18;

    this.getName(){

      return this.name

    }

  }

  是不是看起来不错啊,我们分析一下两个女票的异同点:

  相同点:都可以创建一个女票(废话)

  不同点:工厂女票每次都要在方法当中新建一个对象,而构造女票不需要。

      工厂女票显示创建了对象,而构造女票并没有。

      工厂女票返回了一个对象,但是构造函数并没有返回。

  构造女票也遇到了点问题:每一次创建对象对需要创建一个新的方法,相当与每个对象都有自己的方法,这不科学我们需要的是每个对象都有同一个方法,这个月的话解决方案就是使用一个外部的全局函数,但是接下来又出现问题了,那就是函数的隐蔽性又没了,完全暴露在外,所以有以下创建女票的方式。

  另一种遇到女票的方式:

  原型模式

   function girlFriend(){

    girlFriend.prototype.name="lick";

    girlFriend.prototype.age=18;

    girlFriend.prototype.getName(){

       return this.name

    }

  }

  var gf=new girlFriend();

     console.log(gf.age);

  但是这个女票也会出现问题!

  这个忘记了引用类型的问题,比如Arry()

 function girlFriend(){

    girlFriend.prototype.name="lick";

    girlFriend.prototype.age=18;

    girlFriend.prototype.arr=[1,2,3];

    girlFriend.prototype.getName(){

       return this.name

    }

  }

出现了两个女票分别向arr[]插入数值

var gf=new girlFriend();

gf.arr.push(4)//arr[1,2,3,4]

var gf1=new girlFriend();

gf.arr.push(4);//arr[1,2,3,4,4]

所以这个不可取(娶)啊。

接下来介绍一个更好一点的妹子,也是成功率和好评率最高的妹子给你。

构造函数和原先模式混合:

要有这样一个思想,那就是构造函数用来做属性的定义,原型用来做方法

function girlFrind(name,age){

  this.name=name;

  this.age=age;

  this.arr=[1,2,3,4];

}

girlFriend.prototype={

  constructor:girlFriend,

  getName:function(){

    return this.name

  }

}

var gf=new girlFriend("lick",18);

gf.arr.push(5);//arr=[1,2,3,4,5];

var gf1=new girlFriend("lick1",18);

gf1.arr.push(6);//arr=[1,2,3,4,6];是不是很神奇

而且有一点就是调用的gf.getName===gf1.getName