面向对象编程的第一步,就是要生成对象。前面说过,对象是单个实物的抽象。通常需要一个模板,表示某一类实物的共同特征,然后对象根据这个模板生成。

2.1构造函数的特点

  1. 特点:1.首字母大写
  2. 2.函数内部使用this关键字,谁new(实例化)就指谁
  3. 3.使用this关键字给对象添加属性
  4. 4.必须使用new关键字,去生成一个对象

实例 —>new出来的对象 /
/
构造函数:构造一个类(对象)的函数
对象
类 抽象的对象

  1. function Person(name,age){
  2. this._name=name;
  3. this._age=age;
  4. }
  5. var p=new Person("li",10);
  6. console.log(p);
  7. console.log(Person("li",10));
  8. // Person就是构造函数。

2.2构造函数的缺点

通过构造函数为实例对象定义属性,虽然很方便,但是有一个缺点。
缺点:同一个构造函数的多个实例之间,无法共享属性,从而造成对系统资源的浪费。

  1. <script>
  2. function Person(name,age){
  3. this.name =name;
  4. this.age = age;
  5. this.eat="水果"; //eat是共享属性
  6. }
  7. var p =new Person("li",19)
  8. var zhang =new Person("zhang",20)
  9. console.log(p)
  10. console.log(zhang)

解决办法:共有的属性或者共有的方法我们可以放在原型对象上
JavaScript 的原型对象(prototype)

  1. function Person(name,age){
  2. this.name =name;
  3. this.age = age;
  4. }
  5. Person.prototype.eat = "水果"
  6. var p =new Person("li",19)
  7. var zhang =new Person("zhang",20)
  8. console.log(p)
  9. console.log(zhang)