JavaScript 物件導向初步理解

試茶發表於2018-05-05

物件導向三大特徵:封裝(只能通過物件來訪問方法),繼承(從已有物件),多型

 
oop組成:方法:物件下面的方法 
                屬性:物件下面的變數 
 
例子:
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 屬性使您有能力向物件新增屬性和方法。

相關文章