當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JavaScript中对象成员的可见性
生活随笔
收集整理的這篇文章主要介紹了
JavaScript中对象成员的可见性
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
與java等基于類的面向對象語言的private、protected、public等關鍵字的用途類似,基于對象的JavaScript語言,在對象構造上也存在類似的成員可見性問題。
JavaScript對象構造的可見性定義可以分為以下幾種:
1,私有屬性(private properties)
通過var關鍵字定義對象構造中變量的作用域,該變量只能在對象構造方法的作用域內被訪問。如:
function?VariableTest()
{
??????var?myVariable;//private
}
var?vt?=?new?VariableTest();
vt.myVariable;//這里會出現undefined異常
2,私有方法(private methods)
與私有屬性類似,只能在對象構造方法作用域內被訪問。如:
Code
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)
直接為對象構造方法添加的屬性,不能被對象實例訪問,只能供構造方法自身使用。如:
Code
function?StaticVariable(){}
StaticVariable.variable?=?"static?variable";
var?sv?=?new?StaticVariable();
sv.variable;//返回"undefined"
StaticVariable.prototype.variable;//返回"undefined"
StaticVariable.variable;//返回"static?variable"
6,靜態方法(static methods)
直接為對象構造方法添加的方法,不能被對象實例訪問,只能供構造方法自身使用。
代碼省略。。。。。。。。
JavaScript對象構造的可見性定義可以分為以下幾種:
1,私有屬性(private properties)
通過var關鍵字定義對象構造中變量的作用域,該變量只能在對象構造方法的作用域內被訪問。如:
function?VariableTest()
{
??????var?myVariable;//private
}
var?vt?=?new?VariableTest();
vt.myVariable;//這里會出現undefined異常
2,私有方法(private methods)
與私有屬性類似,只能在對象構造方法作用域內被訪問。如:
Code
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)
直接為對象構造方法添加的屬性,不能被對象實例訪問,只能供構造方法自身使用。如:
Code
function?StaticVariable(){}
StaticVariable.variable?=?"static?variable";
var?sv?=?new?StaticVariable();
sv.variable;//返回"undefined"
StaticVariable.prototype.variable;//返回"undefined"
StaticVariable.variable;//返回"static?variable"
6,靜態方法(static methods)
直接為對象構造方法添加的方法,不能被對象實例訪問,只能供構造方法自身使用。
代碼省略。。。。。。。。
轉載于:https://www.cnblogs.com/gisland/archive/2009/10/16/1584688.html
總結
以上是生活随笔為你收集整理的JavaScript中对象成员的可见性的全部內容,希望文章能夠幫你解決所遇到的問題。