令人驚奇的JavaScript物件導向(四)

來源:互聯網
上載者:User

 

 

這一次就說說“static”吧。

 

靜態成員變數

 

眾所周知,靜態成員變數就是整個類只儲存一個副本的變數,不管你通過這個類建立了多少個對象,所有對象共用一個靜態成員變數。靜態變數可以通過類名或者對象訪問。

 

JavaScript中類似這樣的成員變數定義方式如下:

 

TestClass.sVar = 1;

 

但是這樣建立的變數僅僅符合“保留一份副本”、“通過類名訪問”的特徵。並且這樣的變數只能是公有的,並且不能通過對象進行訪問。在類成員方法訪問該變數時,仍然需要通過類名進行訪問。 這樣的一種機制實際上僅僅是為變數綁定一個“父親”,而沒有像C++或者Java那樣封裝得那麼嚴謹。

 

靜態成員函數

 

靜態成員函數可以通過類或者類的對象進行調用,函數體內不能訪問成員變數。

 

JavaScript中類似這樣的成員方法定義方式和“靜態成員變數”的定義方式相仿:

 

TestClass.sMethod = function() {};

 

這樣的函數體中可以通過this或者類名訪問“靜態成員變數”。

 

一個例子

 

Code
<script type="text/javascript">

// 類聲明
function TestClass() {
    //定義類成員
    this.sVar = 10;
    this.sMethod = function() {
        alert(this.sVar);
    }
};

// 定義靜態變數
TestClass.sVar = 1;

// 定義靜態方法
TestClass.sMethod = function() {
    alert(this.sVar);
}

//調用靜態變數與靜態方法
alert(TestClass.sVar);
TestClass.sMethod();

test = new TestClass();
//調用成員變數及成員方法
alert(test.sVar);
test.sMethod();

</script>

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.