JS 創建自定義對象的方式方法
一、概述
還記得剛開始做項目的時候,看到別人封裝的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
// 動態刪除方法與屬性
2
// 動態增加實例屬性與方法
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 創建自定義對象的方式方法