prototype內部方法跟原型建立方法的一些區別

2021-08-31 02:04:00 字數 865 閱讀 3998

1、

prototype是與clone聯絡起來的,

也就是說,當建立例項時,prototype會把成員clone到該class(function)的例項上。

detail: 最常見的幾個內建內物件裡的prototype,如:array原型有join, split方法,

當建立陣列a時var a=[1,2],原型裡的所有方法都被clone到a上。

2、this是該類的例項指標(該指標為"動態聯編")。如何理解js this的動態聯編

當建立該類例項時,例項具有預先定義的所有以this.p類似的成員。也具有prototype原型裡定義的成員,如果類內部定義與prototype裡的乙個定義相同,則不是重寫:

看這個例子,jsclass定義的this.func,還有prototype裡定義的func,如果jsclass內部有成員與原型裡的相同,例項化時優先權為this.func,但注意,原型裡並不是重寫func,而是jsclass例項共有的,雖然其優先權沒有this.func高,與此同時,我們也可以以這種方式來理解prototype與類內部定義成員:

我們再把上面的**修改一下。這樣看:

注釋:類內部的成員可以用delete刪除,而原型裡定義的,則不能用delete 例項名.成員名來刪除的。

如果用prototype定義後,例項化時:用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件

也就是在上面的 delete a.func;//此處刪除是的類內部定義的func

a.func();//呼叫prototype成員之後,再次呼叫a.func(),呼叫時,通過呼叫prototype.func來實現的。而並非a.func(),這也解釋了為什麼在jsclass內部定義func與在prototype定義func時不會有重寫現象。

原型跟原型鏈 prototype跟proto

1.原型跟原型鏈 每個物件都有乙個原型物件,物件是以其為模板,從原型繼承方法和屬性。原型物件也有原型,並從中繼承方法跟屬性,一層一層,這種關係就是原型鏈。這些屬性跟方法是定義在object的建構函式的prototype屬性上的,而非物件例項本身。在傳統的物件導向語言中,是通過定義乙個類,此後建立物件...

jquery ready方法實現原理 內部原理

今天閒來無事研究研究jquery.ready 的內部實現,看jq的原始碼一頭霧水,由於自己很菜了,於是翻了翻牛人的播客,講述詳細,收穫頗多。先普及一下jquery.ready 和window.onload,window.onload事件是在頁面所有的資源都載入完畢後觸發的.如果頁面上有大等資源響應緩...

This和Prototype定義方法的區別

this 是指代上下文中的this物件 1.利用this實現的方法,可以訪問類中的私有變數和私有方法。而利用原型物件實現的方法,無法訪問類中的私有變數和方法 function person x 通過prototype實現的原型物件上的方法 person.prototype.say function ...