我試圖創建與公共方法和公共變量JavaScript對象:JavaScript對象和公共變量
jeeni.DataGrid = (function(elementId){
var divId = elementId;
var div;
var saveUrl;
var columns;
var dataUrl;
var validate = function(){
console.log("divId: " + (divId));
console.log("div: " + div);
console.log("saveUrl: " + saveUrl);
console.log("columns: " + columns);
console.log("dataUrl: " + dataUrl);
};
return {
toString:validate,
dateURL:dataUrl,
saveURL:saveUrl,
columnDefs:columns
};
});
,我使用它是這樣的:
<script>
$(document).ready(function() {
var grid = new jeeni.DataGrid("myDataGrid");
grid.saveURL = "http://www.jeeni.co.uk/grid/save";
grid.dataURL = "http://www.jeeni.co.uk/grid/data";
grid.columnDefs = "[{text:'Column1',width:75}, {text:'Column2',width:150}]";
grid.toString();
});
</script>
但在控制檯上我得到:
divId: myDataGrid
div: undefined
saveUrl: undefined
columns: undefined
dataUrl: undefined
任何人都可以解釋爲什麼不確定的變量是不確定的。回報不公開嗎?我怎樣才能讓他們分配而不必使用getter和setter。
謝謝
_「不返回使它們公開嗎?」_否它返回這些變量的當前值(所有這些變量都是未定義的),它不返回對這些變量的引用。你必須使用getters和setter,或者使用屬性來代替變量(即'this.saveUrl'而不是''''''''''''''''''''''''''' 'toString:validate'部分是不同的,因爲'validate'是一個對象。 – nnnnnn