面向对象知识点

Posted on 2015-08-25 23:54  !sylar  阅读(173)  评论(0编辑  收藏  举报

对象的组成:

  方法(行为,操作)  对象下的函数,叫对象的方法 :array.push  array.sort

  属性 对象下的变量,叫做对象的属性  如array.length 

    var obj= new Object();

      obj.name='xiaoming';  //对象具有属性

      obj.showName=function(){     //对象具有showName()的方法

         alert(this.name);

    } 

 

当new 去调用一个函数:这个时候函数中的this就是创建出来的对象,而且函数的返回值直接就是this了。

new 后面调用的函数,就是构造函数;


      function CreatePerson(name){
        
        this.name=name;
        this.showName=function(){
            alert(this.name);
        }
      }
      var p1=new CreatePerson('xiaoming');
        p1.showName();
     var p2=new CreatePerson('xiaoqiang');
        p2.showName();

基本类型:赋值的时候只是值的复制;

  var a=5;

  var b=a;

  b+=3;

  alert(b) // 8

  alert(a)// 5

对象

  var a=[1,2,3,4]

  var b=a;

  b.push(4);

  alert(b);//[1,2,3,4]

  alert(a); //[1,2,3,4]

对象:赋值的时候不仅是值的复制,而且也是引用的传递;

  var a=[1,2,3]

  var b=a;

  b=[1,2,3,4]

  alert(b);//[1,2,3,4]

  alert(a);//[1,2,3]   //因为重新给B赋值了。所以a的值没有变;

 

  var a=5;

  var b=a;

  alert(a=b)// ture

  var a=[1,2,3];

  var b=a;

  alert(a=b)// flase

 

原型:去改写对象下面公用的方法或者属性,让公用的方法或者属性在内存中只有一份(提高性能)

  //原型: css中的class;

  //普通方法: css中的style;

  var arr=[1,2,3,4,5];

  arr.sum=function(){

    var result=0;

    for(var i=0;i<this.length;i++){

    result+=this[i]

    }

    return result;

  }

 原型:prototype:要写在构造函数下面;

 Array.prototype.sum=function(){

  var result=0;

  for(var i=0;i<this.length;i++)

  {

    result+=this[i];

  }

return result;

}

var arr1=[1,2,3,4,5];

var arr2=[1,2,3,4];

alert(arr1.sum());//15

alert(arr2.sum())//10

==================================================

面向对象的写法:

  function 构造函数(){

  this.属性

  }

构造函数.prototype.方法=function(){};

例如: var 对象1= new 构造函数();  //创建一个新对象

    对象1.方法();

写面向对象的原则:

  -先写出普通的写法,然后改成面向对象的写法;

  >>普通方法变形

    1.尽量不要函数嵌套函数;

    2.可以有全局变量;

    3.把onload中不是赋值的语句放到单独的函数中

  >>改成面向对象

    1.全局变量就是属性;

    2.函数就是方法;

    3.onload中创建对象;

    4.更改this指向