沒有使用prototype的方法相當於類別的靜態方法,相反,使用prototype的方法相當於類別的實例方法,不准new後才能使用
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); }
兩種方法到底有什麼差別呢?用不用prototype有什麼作用呢?
測試程式碼:
var t1=new ListCommon2("烧水1","泡茶1","喝1"); // t1.do1();//调用出错 ListCommon2.do1("烧水1"); var t2=new ListCommon2("烧水2","泡茶2","喝2"); t2.do2("烧水2");// // ListCommon2.do2("烧水1");//调用出错
經過測試發現,沒有使用prototype的方法相當於類別的靜態方法,因此可以這樣調用,ListCommon2.do1("燒水1") ;,如果這樣呼叫就會出錯,t1.do1();
相反,使用prototype的方法相當於類別的實例方法,不准new後才能使用,ListCommon2.do2("燒水1") ;這樣就會出錯
結論,使用prototype定義的方法相當於類別的實例方法,必須new後才能使用,函數中可以呼叫函數的限制也會類別的實例方法的限制有些類似
使用不使用prototype定義的方法相當於類別的靜態方法,可以直接使用,不需要new,,函數中可以呼叫函數的限制也會類別的靜態方法法的限制有些類似
#例如不能呼叫this.First();
以上是javascript使用與不使用prototype區別程式碼實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!