2017-05-22 84 views
0

我想打一個靜態數組在JavaScript類,爲了這個,我做的事:如何在JavaScript類中創建私有靜態數組?

var Manager = (function() {  
    function Manager() { 
     var ubications = new ArrayList(); 
     this.ubicationsArray = function() { 
     return(ubication); 
     }; 
    } 

    Manager.prototype.addUbication = function (ubication) { 
     Manager.ubicationsArray().add(ubication); 
    }; 
    Manager.prototype.getUbication = function (index) { 
     return Manager.ubicationsArray().get(index); 
    }; 
    Manager.prototype.sizeOfUbications = function() { 
     return Manager.ubicationsArray().size(); 
    }; 
    return Manager; 
}()); 
Manager["__class"] = "Manager"; 

哪裏ubications是靜態數組和功能ubicationsArray是公共職能進入電影的陣列。

我嘗試使用此代碼:

var ubication = new Ubication(123,456); 
var manager = new Manager(); 
manager.addUbication(ubication); 
alert(manager.sizeOfUbications()); 

但我得到這個錯誤:

Uncaught TypeError: Manager.ubicationsArray is not a function 

是如何在JavaScript代碼中使用靜態數組的正確方法?

+1

從'ubicationsArray()';中刪除父項。只需引用它像'Manager.ubicationsArray.add(...)' – Hamms

+0

@Hamms Manager.ubicationsArray應該返回數組,不應該?但它返回undefined。會是什麼呢? –

+0

'ArrayList'在JavaScript中不存在,'Manager [「__ class」]'對我來說也沒有任何意義。 –

回答

0

目前,JavaScript只能做隱私的功能範圍。

function Manager() { 
} 

Manager.prototype = (function(){ 
    var ubications = []; 

    return { 
    addUbication: function (u) { 
     ubications.push(u); 
    }, 

    getUbication: function (index) { 
     return ubications[index]; 
    }, 

    sizeOfUbications: function() { 
     return ubications.length; 
    } 
    }; 
})(); 
0

在您的構造函數中,this.ubicationsArray將一個屬性賦給對象的實例,而不是構造函數本身。

也許你想是這樣的:

function Manager() { 
} 
var ubications = new ArrayList(); 
Manager.ubicationsArray = function() { 
    return(ubication); 
}; 

注意,該酒店是不是真正的「私有」。這將是更私人的:

var Manager = (function() {  
    function Manager() { 
    } 

    var ubications = new ArrayList(); 

    Manager.prototype.addUbication = function (ubication) { 
     ubications.add(ubication); 
    }; 
    Manager.prototype.getUbication = function (index) { 
     return ubications.get(index); 
    }; 
    Manager.prototype.sizeOfUbications = function() { 
     return ubications.size(); 
    }; 
    return Manager; 
}()); 
Manager["__class"] = "Manager"; 
相關問題