1. 程式人生 > >JS 創建自定義對象的方式方法

JS 創建自定義對象的方式方法

日誌 增加 私有方法 div delet 通過 array www 對他

一、概述

  還記得剛開始做項目的時候,看到別人封裝的js工具類百思不得其解,看來看去看不懂,深挖一下,其實就是自己沒有耐下心去看,但是遇到問題不解決,總會遇到的,今天還是遇到了,就去找了找帖子,重新思考與實踐一下,豁然開朗~!在此記錄一下遲來頓開的茅塞。

  關於JS 對象,啊,對象麽,不就是一個個實例麽,是的,js 也可以創建類,創建對象,創建對象方法,我們今天就具體說一下。

二、創建與使用(開始)

  es 標準給我們提供了String、Math、Array等等這些js對象,當我們使用的時候只需要new一下或者使用其構造方法就可以,比如:

  

var v = "";

let arr 
= new Array();

  類似上面這種,然後就可以使用其方法了,當然我們也可以給他添加類方法,如何加,大家向下看。

  如果我們需要自己創建對象,使用最多的可能就是json對象,像是這樣:

var obj = {x:{y:1}};

console.log(obj.x.y)
//    1 

  但是如果我們想把他搞成類似Array這種自定義類,然後創建我們需要的方法,咋整,直接加function 麽,是的,就是加function,只不過要註意寫法,還有的就是跟java對象一樣,它有私有、實例、與類只說,接著往下看。

1)建立類,建立類的實例

  首先我們建立一個對象,作為對象,必須要有構造方法,像是這樣:

// 第一種
function t(){
    alert(1);
}

// 第二種
var t2 = function(){
    alert(2)       
}

  是不是想罵人,餵,貼主你是不是忽悠人呢?這TM 不就是我們平時使用的函數嗎,先別急,我不否認我們平時使用最多的在js 裏就是這樣,對於新手來說也是最容易,理解的就是個方法,但是函數也是對象,我們可以對他進行引用,也可以創建它的實例,像這樣:

var test = new t();

  恭喜你,你已經成功創建了t的實例,實例名為test。然後就可以調用類裏的屬性和方法了,好,我們接著建立方法,由於時間關系,我已經有點困了,以下就不多說了~~ (你妹的,快講重點)

2)私有屬性與私有方法

  需要註意的時候私有屬性和方法,外部是無法訪問的,跟java類似,只提供給閉包內使用(關於閉包,有空再說),大家記住只能在你的類內部使用就好。

function t(
  // 私有屬性    
  var a = ‘1‘;

  // 私有方法
  var siyou = function(){
     alert(1);  
  }   
           
)

3)實例屬性與實例方法

  關於實例方法,當我們建立類的實例後,就可以訪問其實例方法與實例屬性了,這裏我聲明了一個私有屬性並把this賦值給他,為什麽這樣(以後再說,真困了= =),當然你可以直接使用this也可以。

function t(){
    var _self = this;
      
     _self.test=function(){
        alert(1)
    }  
    
   _self.test2 = 1;    

}    

// 調用

var test = new t();
t.test2;
// 1
t.test;
// alert

4)類方法與類屬性

  關於類方法,你可以把它理解為直接可以應用的方法或屬性,比如Math.round(param) 就是最典型的類方法。

function t(){
    var _self = this;
      
     _self.test=function(){
        alert(1)
    }  
    
   _self.test2 = 1;    

}    


t.TEST=1;
t.TEST2=function(){.....}
// 或者引用
function test(){}

t.TEST2 = test;

三、動態增加與刪除

  下面是動態增加與刪除。太困了~撐不住了。。

//動態增加屬性
var obj = {};
obj.v = ‘2‘;
// 或者
obj[v] = ‘2‘;
// 上面是json對象哦

// 動態增加方法與屬性
// 屬性
var o = function(){};
o.prototype.test = ‘1‘;
// 方法
o.prototype.test2=function(){alert(‘test‘)}
var obj= new o();
obj.test;
// 1
obj.test2();
// alert

// 動態刪除方法與屬性
delete o.prototype.test
delete o.prototype.test2

// 動態增加實例屬性與方法
var t = new o();
t.v = ‘2‘;
t.x = function(){alert(1)}
t.v;
// 2
t.x();
// alert

// 刪除實例屬性和方法
delete t.v
delete t.x

另外關於實例屬性還可以通過下標的方式,在此我多說了,(感謝保住happykejie)大家可以參考博主happykejie的文章JS 自定義對象 屬性 ,這裏主要是講了一點個人的理解與記錄,這樣利於記憶。

JS 創建自定義對象的方式方法