JavaScript私有屬性和靜態屬性

admin發表於2017-03-10

JavaScript中並沒有私有屬性和靜態屬性這兩個概念,不過可以模擬實現。

下面就簡單介紹一下如何模擬實現這兩個屬性。

一.私有屬性:

關於私有屬性的概念這裡就不介紹了。關於實現私有屬性的方法其實非常的簡單,就是在建構函式中宣告一個私有變數(區域性變數),然後再在建構函式中定義一個公共方法來方位這個私有變數,就類似於C#中的get和set訪問器。

下面是一段例項私有屬性程式碼:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
function web(webName) {
  var webName=webName;
  web.prototype.getWebName=function(){
    return webName;
  }
}
firstWeb=new web("螞蟻部落");
console.log(firstWeb.getWebName());
secondWeb=new web("新銳網路");
console.log(firstWeb.getWebName());

以上程式碼中,建立了兩個物件例項,彈出的值也各有不同。

所謂的例項屬性,就是在建立的各個物件例項中,屬性之間是互不相關的。

程式碼分析:

webName是建構函式的私有變數,當然在外部不能夠直接訪問,於是通過使用prototype為建構函式新增了一個函式,此函式可以返回私有變數webName,其實這就是利用了閉包的原理實現的此效果

二.靜態屬性:

靜態屬性可以實現資料全域性共享。實現它的方式也是非常簡單的,首先在建構函式的外部宣告一個私有變數,然後通過prototype為此建構函式新增兩個函式可以設定和方位建構函式外部宣告的私有變數,程式碼如下:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
(function(){
  var staticValue="新銳網路";
  web=function(webName){
    this.webName=webName;
  };
  web.prototype.getStatic=function(){
    return staticValue;
  }
  web.prototype.setStatic=function(value){
    staticValue=value;
  }
})()
var firstWeb=new web();
firstWeb.setStatic("螞蟻部落");
console.log(firstWeb.getStatic());
var secondWeb=new web();
console.log(secondWeb.getStatic());

建立的兩個物件例項都可以彈出"螞蟻部落",兩個物件例項的getStatic()函式都是訪問的變數staticValue。

相關文章