JavaScript面向对象①
- 什么是对象
对象是一个整体,对外提供一些操作
- 什么是面向对象
使用对象时,只关注对象提供的功能,不关注其内部细节;比如jQuery
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。- 面向对象编程(OOP)的特点(自己理解的特点:把书本上多态放在类继承里
- 封装
- 继承:从已有的对象上,继承出新的对象
- 多重继承
- 多态
- 对象的组成
- 方法---函数:过程、动态的
- 属性---变量:状态、静态的
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();
- 缺点
- 没有new
- 浪费资源---每个对象都有自己的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(); //混合模式
- 以上就是优化后的代码---每个人理解不一样只要你自己明白就行

更多精彩