原型对象

可以将原型对象看做对象的基类。所有创建的对象实例共享该原型对象。

  • JavaScript 语言的对象体系,不是基于“类”的,而是基于构造函数(constructor)和原型链(prototype)
  • 新建构造函数的时候会生成一个原型对象。

    构造函数的缺点

    Javascript通过构造函数生成新对象,因此构造函数可以视为对象的模板。实例对象的属性和方法,可以定义在构造函数内部。
    1. var Person = function(name,age){
    2. this.name = name;
    3. this.age = age;
    4. }
    5. var chengchao = new Person("程超",18)
    6. console.log(chengchao.name); //"程超"
    7. console.log(chengchao.age); //18
    缺点:
    通过构造函数为实例对象定义属性,虽然很方便,但是有一个缺点。同一个构造函数的多个实例之间,无法共享属性,从而造成对系统资源的浪费
  1. # 例如现在有个共同的爱好
  2. var Person = function(name,age){
  3. this.name = name;
  4. this.age = age;
  5. this.love = function(){
  6. console.log(this.name+"爱看片")
  7. }
  8. }
  9. var chengchao = new Person("程超",18)
  10. chengchao.see();

原型对象

  1. var Person = function(name,age){
  2. this.name = name;
  3. this.age = age;
  4. }
  5. Person.prototype.see = function(){
  6. console.log(this.name+"爱看片")
  7. }
  8. var chengchao = new Person("程超",18);
  9. var lisi = new Person("李四",19);
  10. chengchao.see();
  11. lisi.see();

四、原型 - 图1