通過var關鍵字定義對象構造中變量的作用域,該變量只能在對象構造方法的作用域內被訪問。如: 代碼如下: function VariableTest() { var myVariable;//private } var vt = new VariableTest(); vt.myVariable;//這里會出現undefined異常
2,私有方法(private methods) 與私有屬性類似,只能在對象構造方法作用域內被訪問。如: 代碼如下: function MethodTest() { var myMethod = function()//private { alert("private method"); } this.invoke = function() { //能夠訪問到myMethod myMehtod(); } } var mt = new MethodTest(); mt.myMethod();//錯誤。使用trycatch的話,可捕獲“對象不支持此屬性或方法”異常 mt.invoke();
3,公共屬性(public properties) 有兩種定義公共屬性的途徑: (1)通過this關鍵字來定義。如: 代碼如下: function PrivilegedVariable() { this.variable = "privileged variable"; } var pv = new PrivilegedVariable(); pv.variable;//返回 "privileged variable"
(2)通過構造方法的原型來定義。如: 代碼如下: function PublicVariable(){} PublicVariable.prototype.variable = "public variable"; var pv = new PublicVariable(); pv.variable;//返回"public variable"
4,公共方法(public methods) 同理,有兩種定義公共方法的途徑。
(1)通過this關鍵字來定義。(2)通過構造方法的原型來定義。 這里省略。。。。。。。。。。。 5,靜態屬性(static properties) 直接為對象構造方法添加的屬性,不能被對象實例訪問,只能供構造方法自身使用。如: 代碼如下: function StaticVariable(){} StaticVariable.variable = "static variable"; var sv = new StaticVariable(); sv.variable;//返回"undefined" StaticVariable.prototype.variable;//返回"undefined" StaticVariable.variable;//返回"static variable"