面向对象初步理解

oop:抽象,封装(只能通过对象来访问方法),继承(从已有对象),多态

 
oop组成:方法:对象下面的方法  arr.push()arr.sort()
                属性:对象下面的变量
 
例子:var obj=new Object();//创建一个空对象
         obj.name=‘小明’;
         obj.showNmae=function(){
         alert(this.name);//关键:this的用法
        }
         obj.showName();
 
工厂方式:面向对象的封装函数
function createPerson(name){
 //1、原料
  var  obj=new Object();
//2、加工
  obj.name=name;
  obj.showName=function(){
      alert(this.name);
};
//3、出场
return obj;
var p1=createPerson(‘小明’);//创建出来的对象,相当于obj
p1.showName();//调用对象方法
 
重点:当new去调用一个函数,此时this就是函数创建出来的对象,而且函数的返回值直接就是this啦(隐式返回)
上式可改为:
 
function createPerson(name){
     this.name=name;
     this.showName=function(){
          alert(this.name);}
var p1=new CreatePerson(‘小强’);
p1.showName();
 
 
对象的引用
基本类型:赋值的时候只是值的复制
对象类型:赋值不仅是值的传递也是引用的传递
   var a=【1,2,3】;
   var b=a;
   b.push(4);
   alert(a);  //【1,2,3,4】
   alert(b);   //【1,2,3,4】
 
原型
改写对象下面公用的方法或属性,让公用的方法或者属性在内存中存在一份(提高性能)
  
//原型:css中的class
//普通方法:css中的style
原型:prototype,要写在构造函数下面
var arr=【1,2,3,4,5】;
Array.prototype.sum=function(){
    var result=0;
    for(var i=0;i<this.length;i++){
     ;  result +=this【i】;
 }
alert(arr.sum())
 
 
 
this  指向问题
事件或者定时器,尽量让面向对象中的this指向对象
 
prototype 属性使您有能力向对象添加属性和方法。

猜你喜欢

转载自www.cnblogs.com/ou-blog/p/8993839.html