2013年3月6日 星期三
JS public private static
終於有點了解 因為老是被以前學JAVA的觀念所引導
而不能接受字典式的設計
另一方面,也覺得應該用心去理解真正的public private private protected的意思
首先先來解釋我了解的javascript的 private
就是只有物件內部才可以使用。
那因為scope的限制在裡面,實作上只要在乖乖在裡面用var作宣告就好了。
自然操作範圍就會被限制在裡面。
//*******************
// private
//*******************
var basic1 = function(){
/********************************
private attribute
********************************/
var _attr1 = 'private attr1';
var _attr2 = 'private attr1';
/*****************************
private method
*****************************/
function _func1(){
return "this is private method(method1)";
}
function _func2(param1){
return "this is private method("+param1+")";
}
/*****************************
*constructor
*****************************/
function constructor(){
console.log("this is basic1 constructor.");
console.log("*******使用private attribute and method*********");
var var1 = _attr1;
console.log("this is private attribute(" +var1+")");//this is private attribute(private attr1)
var var2 = _func1();
console.log(var2);//this is private method(method1)
var var3 = _func2(_attr1);
console.log(var3);//this is private method(private attr1)
var var4 = _func2("HERE");
console.log(var4);//this is private method(HERE)
var var5 = _func2();
console.log(var5);//this is private method(undefined)
}
constructor();
}
//*******************
// public 這個最不懂,只知道如下這樣寫,可以讓NEW來的物件可以用其成員
//*******************
var basic1 = function(){
this.attr1 = 'public attr1';
this.attr2 = 'public attr2';
/**************************
*public method
**************************/
this.method1 = function(){
return 'this is public method(method1)';
}
this.method2 = function(param1, param2){
return 'attr1='+param1+'&attr2='+param2;
}
}
//*******************
// static 靜態
//*******************
var basic1 = function(){
basic1.sattr1 = 'public static attr1';
alert('內部 '+basic1.sattr1);
function cons() {
alert('cons go '+basic1.sattr1);
}
cons();
};
var obj1 = new basic1();
alert(basic1.sattr1);
alert(obj1.sattr1);
訂閱:
文章 (Atom)