JavaScript面向对象①

  • 什么是对象

  对象是一个总体,对外提供一些操做编程

  • 什么是面向对象

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

  • 面向对象编程(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();   
//混合模式
  • 以上就是优化后的代码---每一个人理解不同只要你本身明白就行
相关文章
相关标签/搜索