JS

                     JS面向对象

创建多个对象,可以使用
1.工厂模式

 function createStudent(){
    var obj=new Object();
    obj.name=name;
    obj.age=age;
    obj.say = function(){
      alert("say-----");
    }
    return obj;
  }     
  //创建多个对象
  var stu1 = createStudent("lisi",20);
  var stu2 = createStudent("lisi",20);
  var stu3 = createStudent("lisi",20);
 
  stu1.say == stu2.say;  //false

优点:简化重复代码操作
缺点:
1.对象不能细分
2.对于公有属性和方法的存放,浪费内存空间

为了解决工厂模式第一个缺点,将工厂模式优化,得出了构造函数模式
2.构造函数模式

function Student(name,age){
    this.name=name;
    this.age=age;
    this.say=say;
  }
  var stu1 = new Student("lisi",20);
  var stu2 = new Student("tom",20);
    stu1.constructor;//Student
    stu1.say == stu2.say;  //true

但是这时还没能解决第二个缺点,故
3.原型模式
将所有实例对象的共有属性和方法存放在构造函数的原型对象中

 function Student(name,age){
    this.name=name;
    this.age=age;
  }
  Student.prototype.say=function(){}

  //Student.prototype={ //{}是new Object 这个会覆盖上面的prototype,所以这时stu1,stu2调用不了say方法
   construction:Student,  //因为stu1指向Object,所以这时stu1要指回Student,所以Object的constructor指向Student
    run:function(){}} 

  var stu1=new Student();
  var stu2=new Student();

4.继承
子类的原型指向父类的实例对象
父类的实例对象指向子类的构造函数
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值