• 什么是对象

  对象是一个整体,对外提供一些操作

  • 什么是面向对象

  使用对象时,只关注对象提供的功能,不关注其内部细节;比如jQuery

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
  • 面向对象编程(OOP)的特点(自己理解的特点:把书本上多态放在类继承里
  1. 封装
  2. 继承:从已有的对象上,继承出新的对象
  • 多重继承
  • 多态
  • 对象的组成
  1. 方法---函数:过程、动态的
  2. 属性---变量:状态、静态的
arr=[1,2,3,4,5]

//arr是一个对象

arr.length;//属性

arr.push(6);//方法
//变量跟属性本是同一个东西
//var a=12;//变量:自由
//arr.a = 5;//属性:属于一个对象

 

//函数
function show(){
  
}
//方法:属于一个对象的
arr.fn=function(){

}
  • 简单解释一下this指向
//针对array
var arr=[12,23,45];
arr.show=function(){
    //this:是当前的方法,属于谁  
    alert(this)//arr
}
//针对object
var obj = new Object();
obj.aaa=12;
obj.show=function(){
    alert(this.aaa)//12  
}
obj.show();
  • 工厂模式构造对象
//其实这个函数就是创建一个对象(用工厂方式构造对象)
//用工厂方式构造对象
//好听点就是:构造函数
function  create(name,sex){
    var obj = new Object();
    //属性
    obj.name=name;
    obj.sex=sex;
    //方法
    obj.showName=function(){
        alert(this.name)//111
    }
    obj.showSex=function(){
        alert(this.sex)//
    }
    return obj;
}
var p1=create("111","男');
p1.showName();   
p1.showSex();     
  • 缺点
  1. 没有new
  2. 浪费资源---每个对象都有自己的function
  • 解决缺点
//this:当前方法,属于谁;
//但是函数前面有new的话,this就会失效;
function  create(name,sex){
    //属性
    //var this = newObject();//假想系统帮我们处理了创建对象
    this.name=name;
    this.sex=sex;
    //方法
    this.showName=function(){
        alert(this.name)//111
    }
    this.showSex=function(){
        alert(this.sex)//
    }
    //return this;//假想系统帮我们处理了return
}
var p1=new create("111","男');
p1.showName();   
p1.showSex();   
//记住一句话里面有new,外面就不需要new;外面有new,里面就不需要new;

  
  • 以上解决了new那怎么解决浪费资源呢?看下面
//首先区别一下类,对象(实例)
var arr = new Array();
Array.prototype.sum=function(){
    //在Arry这个类上都可以使用sum()
}
//arr对象:真正有功能的东西,是被类构造出来的
//Array类:不具备实际的功能,只能用来构造对象
//所以我理解的就是构造函数就是类,类就是构造函数---只针对js
function  Create(name,sex){
    //属性
    this.name=name;
    this.sex=sex;
}
//Create就是类,也是构造函数
Create.prototype.showName=function(){
     alert(this.name)//111
}
Create.prototype.showSex=function(){
     alert(this.sex)//
}
//记住一句话相同的加在原型里,不同加在构造函数里
var p1=new create("111","男');
p1.showName();   
p1.showSex();   
//混合模式
  • 以上就是优化后的代码---每个人理解不一样只要你自己明白就行

 

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄