js類定義函數(shù)時(shí)用prototype與不用的區(qū)別示例介紹
更新時(shí)間:2014年06月10日 08:51:37 作者:
沒(méi)有使用prototype的方法相當(dāng)于類的靜態(tài)方法,相反,使用prototype的方法相當(dāng)于類的實(shí)例方法,不許new后才能使用
一直在使用js編寫(xiě)自以為是面向?qū)ο蟮姆椒?,遇到一個(gè)問(wèn)題,就是定義一個(gè)方法,如下:
function ListCommon2(first,second,third)
{
this.First=function ()
{
alert("first do"+first);
}
}
ListCommon2.do1=function(first)
{
// this.First();
alert("first do"+first);
}
ListCommon2.prototype.do2=function(first)
{
// this.First();
alert("first do"+first);
}
兩種方法到底有什么區(qū)別呢?用不用prototype有什么作用呢?
測(cè)試代碼:
var t1=new ListCommon2("燒水1","泡茶1","喝1");
// t1.do1();//調(diào)用出錯(cuò)
ListCommon2.do1("燒水1");
var t2=new ListCommon2("燒水2","泡茶2","喝2");
t2.do2("燒水2");//
// ListCommon2.do2("燒水1");//調(diào)用出錯(cuò)
經(jīng)過(guò)測(cè)試發(fā)現(xiàn),沒(méi)有使用prototype的方法相當(dāng)于類的靜態(tài)方法,因此可以這樣調(diào)用,ListCommon2.do1("燒水1");,如果這樣調(diào)用就會(huì)出錯(cuò),t1.do1();
相反,使用prototype的方法相當(dāng)于類的實(shí)例方法,不許new后才能使用,ListCommon2.do2("燒水1");這樣就會(huì)出錯(cuò)
結(jié)論,使用 prototype定義的方法相當(dāng)于類的實(shí)例方法,必須new后才能使用,函數(shù)中可以調(diào)用函數(shù)的限制也會(huì)類的實(shí)例方法的限制有些類似
使用 不使用prototype定義的方法相當(dāng)于類的靜態(tài)方法,可以直接使用,不需要new,,函數(shù)中可以調(diào)用函數(shù)的限制也會(huì)類的靜態(tài)方法法的限制有些類似
例如不能調(diào)用this.First();
復(fù)制代碼 代碼如下:
function ListCommon2(first,second,third)
{
this.First=function ()
{
alert("first do"+first);
}
}
ListCommon2.do1=function(first)
{
// this.First();
alert("first do"+first);
}
ListCommon2.prototype.do2=function(first)
{
// this.First();
alert("first do"+first);
}
兩種方法到底有什么區(qū)別呢?用不用prototype有什么作用呢?
測(cè)試代碼:
復(fù)制代碼 代碼如下:
var t1=new ListCommon2("燒水1","泡茶1","喝1");
// t1.do1();//調(diào)用出錯(cuò)
ListCommon2.do1("燒水1");
var t2=new ListCommon2("燒水2","泡茶2","喝2");
t2.do2("燒水2");//
// ListCommon2.do2("燒水1");//調(diào)用出錯(cuò)
經(jīng)過(guò)測(cè)試發(fā)現(xiàn),沒(méi)有使用prototype的方法相當(dāng)于類的靜態(tài)方法,因此可以這樣調(diào)用,ListCommon2.do1("燒水1");,如果這樣調(diào)用就會(huì)出錯(cuò),t1.do1();
相反,使用prototype的方法相當(dāng)于類的實(shí)例方法,不許new后才能使用,ListCommon2.do2("燒水1");這樣就會(huì)出錯(cuò)
結(jié)論,使用 prototype定義的方法相當(dāng)于類的實(shí)例方法,必須new后才能使用,函數(shù)中可以調(diào)用函數(shù)的限制也會(huì)類的實(shí)例方法的限制有些類似
使用 不使用prototype定義的方法相當(dāng)于類的靜態(tài)方法,可以直接使用,不需要new,,函數(shù)中可以調(diào)用函數(shù)的限制也會(huì)類的靜態(tài)方法法的限制有些類似
例如不能調(diào)用this.First();
您可能感興趣的文章:
- javascript中的prototype屬性使用說(shuō)明(函數(shù)功能擴(kuò)展)
- JS構(gòu)造函數(shù)與原型prototype的區(qū)別介紹
- JavaScript下的時(shí)間格式處理函數(shù)Date.prototype.format
- js prototype截取字符串函數(shù)
- 基礎(chǔ)的prototype.js常用函數(shù)及其用法
- String.prototype實(shí)現(xiàn)的一些javascript函數(shù)介紹
- 淺談js構(gòu)造函數(shù)的方法與原型prototype
- prototype.js常用函數(shù)詳解
- 基于prototype擴(kuò)展的JavaScript常用函數(shù)庫(kù)
- JavaScript中isPrototypeOf函數(shù)作用和使用實(shí)例
- JS函數(shù)進(jìn)階之prototy用法實(shí)例分析
相關(guān)文章
javascript實(shí)現(xiàn)點(diǎn)擊按鈕讓DIV層彈性移動(dòng)的方法
這篇文章主要介紹了javascript實(shí)現(xiàn)點(diǎn)擊按鈕讓DIV層彈性移動(dòng)的方法,實(shí)例分析了javascript操作div層的操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02uniapp小程序配置tabbar底部導(dǎo)航欄實(shí)戰(zhàn)指南
tabBar如果應(yīng)用是一個(gè)多tab應(yīng)用,可以通過(guò)tabBar配置項(xiàng)指定tab欄的表現(xiàn),以及tab切換時(shí)顯示的對(duì)應(yīng)頁(yè),下面這篇文章主要給大家介紹了關(guān)于uniapp小程序配置tabbar底部導(dǎo)航欄的相關(guān)資料,需要的朋友可以參考下2022-09-09Js表格萬(wàn)條數(shù)據(jù)瞬間加載實(shí)現(xiàn)代碼
一條數(shù)據(jù)創(chuàng)建一行,如果數(shù)量大的時(shí)候,一次性要加載完數(shù)據(jù)的話,瀏覽器就會(huì)卡上半天,下面有個(gè)不錯(cuò)的方法,大家可以參考下2014-02-02JavaScript+Canvas實(shí)現(xiàn)彩色圖片轉(zhuǎn)換成黑白圖片的方法分析
這篇文章主要介紹了JavaScript+Canvas實(shí)現(xiàn)彩色圖片轉(zhuǎn)換成黑白圖片的方法,結(jié)合實(shí)例形式分析了javascript結(jié)合HTML5相關(guān)函數(shù)修改頁(yè)面圖片元素顯示效果相關(guān)操作技巧,需要的朋友可以參考下2018-07-07微信小程序?qū)崿F(xiàn)頁(yè)面導(dǎo)航的方法詳解
這篇文章主要為大家詳細(xì)介紹一下微信小程序?qū)崿F(xiàn)頁(yè)面導(dǎo)航的幾種方法以及幫助大家掌握如何使用頁(yè)面之間的導(dǎo)航跳轉(zhuǎn),感興趣的可以了解一下2022-07-07