JavaScript 對(duì)象成員的可見(jiàn)性說(shuō)明
更新時(shí)間:2009年10月16日 20:54:13 作者:
與java等基于類(lèi)的面向?qū)ο笳Z(yǔ)言的private、protected、public等關(guān)鍵字的用途類(lèi)似,基于對(duì)象的JavaScript語(yǔ)言,在對(duì)象構(gòu)造上也存在類(lèi)似的成員可見(jiàn)性問(wèn)題。
JavaScript對(duì)象構(gòu)造的可見(jiàn)性定義可以分為以下幾種:
1,私有屬性(private properties)
通過(guò)var關(guān)鍵字定義對(duì)象構(gòu)造中變量的作用域,該變量只能在對(duì)象構(gòu)造方法的作用域內(nèi)被訪(fǎng)問(wèn)。如:
function VariableTest()
{
var myVariable;//private
}
var vt = new VariableTest();
vt.myVariable;//這里會(huì)出現(xiàn)undefined異常
2,私有方法(private methods)
與私有屬性類(lèi)似,只能在對(duì)象構(gòu)造方法作用域內(nèi)被訪(fǎng)問(wèn)。如:
function MethodTest()
{
var myMethod = function()//private
{
alert("private method");
}
this.invoke = function()
{
//能夠訪(fǎng)問(wèn)到myMethod
myMehtod();
}
}
var mt = new MethodTest();
mt.myMethod();//錯(cuò)誤。使用trycatch的話(huà),可捕獲“對(duì)象不支持此屬性或方法”異常
mt.invoke();
3,公共屬性(public properties)
有兩種定義公共屬性的途徑:
(1)通過(guò)this關(guān)鍵字來(lái)定義。如:
function PrivilegedVariable()
{
this.variable = "privileged variable";
}
var pv = new PrivilegedVariable();
pv.variable;//返回 "privileged variable"
?。?)通過(guò)構(gòu)造方法的原型來(lái)定義。如:
function PublicVariable(){}
PublicVariable.prototype.variable = "public variable";
var pv = new PublicVariable();
pv.variable;//返回"public variable"
4,公共方法(public methods)
同理,有兩種定義公共方法的途徑。
?。?)通過(guò)this關(guān)鍵字來(lái)定義。(2)通過(guò)構(gòu)造方法的原型來(lái)定義。
這里省略。。。。。。。。。。。
5,靜態(tài)屬性(static properties)
直接為對(duì)象構(gòu)造方法添加的屬性,不能被對(duì)象實(shí)例訪(fǎng)問(wèn),只能供構(gòu)造方法自身使用。如:
function StaticVariable(){}
StaticVariable.variable = "static variable";
var sv = new StaticVariable();
sv.variable;//返回"undefined"
StaticVariable.prototype.variable;//返回"undefined"
StaticVariable.variable;//返回"static variable"
6,靜態(tài)方法(static methods)
直接為對(duì)象構(gòu)造方法添加的方法,不能被對(duì)象實(shí)例訪(fǎng)問(wèn),只能供構(gòu)造方法自身使用。
代碼省略。。。。。。。。
1,私有屬性(private properties)
通過(guò)var關(guān)鍵字定義對(duì)象構(gòu)造中變量的作用域,該變量只能在對(duì)象構(gòu)造方法的作用域內(nèi)被訪(fǎng)問(wèn)。如:
復(fù)制代碼 代碼如下:
function VariableTest()
{
var myVariable;//private
}
var vt = new VariableTest();
vt.myVariable;//這里會(huì)出現(xiàn)undefined異常
2,私有方法(private methods)
與私有屬性類(lèi)似,只能在對(duì)象構(gòu)造方法作用域內(nèi)被訪(fǎng)問(wèn)。如:
復(fù)制代碼 代碼如下:
function MethodTest()
{
var myMethod = function()//private
{
alert("private method");
}
this.invoke = function()
{
//能夠訪(fǎng)問(wèn)到myMethod
myMehtod();
}
}
var mt = new MethodTest();
mt.myMethod();//錯(cuò)誤。使用trycatch的話(huà),可捕獲“對(duì)象不支持此屬性或方法”異常
mt.invoke();
3,公共屬性(public properties)
有兩種定義公共屬性的途徑:
(1)通過(guò)this關(guān)鍵字來(lái)定義。如:
復(fù)制代碼 代碼如下:
function PrivilegedVariable()
{
this.variable = "privileged variable";
}
var pv = new PrivilegedVariable();
pv.variable;//返回 "privileged variable"
?。?)通過(guò)構(gòu)造方法的原型來(lái)定義。如:
復(fù)制代碼 代碼如下:
function PublicVariable(){}
PublicVariable.prototype.variable = "public variable";
var pv = new PublicVariable();
pv.variable;//返回"public variable"
4,公共方法(public methods)
同理,有兩種定義公共方法的途徑。
?。?)通過(guò)this關(guān)鍵字來(lái)定義。(2)通過(guò)構(gòu)造方法的原型來(lái)定義。
這里省略。。。。。。。。。。。
5,靜態(tài)屬性(static properties)
直接為對(duì)象構(gòu)造方法添加的屬性,不能被對(duì)象實(shí)例訪(fǎng)問(wèn),只能供構(gòu)造方法自身使用。如:
復(fù)制代碼 代碼如下:
function StaticVariable(){}
StaticVariable.variable = "static variable";
var sv = new StaticVariable();
sv.variable;//返回"undefined"
StaticVariable.prototype.variable;//返回"undefined"
StaticVariable.variable;//返回"static variable"
6,靜態(tài)方法(static methods)
直接為對(duì)象構(gòu)造方法添加的方法,不能被對(duì)象實(shí)例訪(fǎng)問(wèn),只能供構(gòu)造方法自身使用。
代碼省略。。。。。。。。
您可能感興趣的文章:
- Javascript面象對(duì)象成員、共享成員變量實(shí)驗(yàn)
- js對(duì)象內(nèi)部訪(fǎng)問(wèn)this修飾的成員函數(shù)示例
- JavaScript 面向?qū)ο蟮闹接谐蓡T和公開(kāi)成員
- JS實(shí)現(xiàn)的Object數(shù)組去重功能示例【數(shù)組成員為Object對(duì)象】
- JavaScript 面向?qū)ο蟮?私有成員和公開(kāi)成員
- javascript面向?qū)ο笾x成員方法實(shí)例分析
- javascript面向?qū)ο笾蚕沓蓡T屬性與方法及prototype關(guān)鍵字用法
- JS面向?qū)ο蠡A(chǔ)講解(工廠(chǎng)模式、構(gòu)造函數(shù)模式、原型模式、混合模式、動(dòng)態(tài)原型模式)
- JS 面向?qū)ο笾衿娴膒rototype
- js面向?qū)ο笾?、私有、靜態(tài)屬性和方法詳解
- js面向?qū)ο笾R?jiàn)創(chuàng)建對(duì)象的幾種方式(工廠(chǎng)模式、構(gòu)造函數(shù)模式、原型模式)
- 《javascript設(shè)計(jì)模式》學(xué)習(xí)筆記一:Javascript面向?qū)ο蟪绦蛟O(shè)計(jì)對(duì)象成員的定義分析
相關(guān)文章
javascript 使用正則test( )第一次是 true,第二次是false
這篇文章主要介紹了使用正則test( )第一次是 true,第二次是false的相關(guān)資料,需要的朋友可以參考下2017-02-02網(wǎng)頁(yè)前臺(tái)通過(guò)js非法字符過(guò)濾代碼(罵人的話(huà)等等)
項(xiàng)目中如果需要過(guò)濾非法字符(你不想用戶(hù)輸入的任何字符)的話(huà)在前臺(tái)可以使用js過(guò)濾,同樣可以提高用戶(hù)體驗(yàn),以前都是后臺(tái)過(guò)濾,這樣雙重過(guò)濾用戶(hù)體驗(yàn)更好。2010-05-05關(guān)聯(lián)的Select,可以支持客戶(hù)端動(dòng)態(tài)更新
關(guān)聯(lián)的Select,可以支持客戶(hù)端動(dòng)態(tài)更新...2006-09-09JavaScript實(shí)現(xiàn)簡(jiǎn)單精致的圖片左右無(wú)縫滾動(dòng)效果
這篇文章主要介紹了JavaScript實(shí)現(xiàn)簡(jiǎn)單精致的圖片左右無(wú)縫滾動(dòng)效果,涉及javascript結(jié)合時(shí)間函數(shù)動(dòng)態(tài)操作頁(yè)面元素屬性的相關(guān)技巧,需要的朋友可以參考下2017-03-03Bootstrap模態(tài)框水平垂直居中與增加拖拽功能
最近開(kāi)發(fā)一個(gè)CMS系統(tǒng)使用上了Bootstrap,在開(kāi)發(fā)一個(gè)添加某些選項(xiàng)時(shí),打算彈出一個(gè)模態(tài)框,但是發(fā)現(xiàn),模態(tài)框不會(huì)垂直居中到屏幕上,而是在屏幕上方,通過(guò)查閱資料才解決此問(wèn)題,下面小編給大家分享解決思路2016-11-11給頁(yè)面渲染時(shí)間加速 干掉Dom Level 0 Event
我們?nèi)サ羰录壎ǖ倪壿?發(fā)現(xiàn)只渲染dom元素,不綁定事件的時(shí)間,僅僅125ms,可見(jiàn)事件綁定的時(shí)間消耗還是很大的 ,尤其是第一種方式,也就是Dom Level 0 Event,最為耗時(shí)2012-12-12