天天看點

js prototype

prototype 原型。

我們每建立一個函數 都會建立一個 prototype的屬性,這個屬性指向了這個函數的原型對象。

function a(){}  ,a.prototype  ,prototype原型隻能運用在對象上,不能運用在對象的執行個體上

也就是說

a.prototype 是可以的 var a=new a(),  a.prototype 是不可以的。

所有對象的執行個體共享原型對象。什麼意思如下:

function a(){}

a.prototype.name="張三";//為原型對象加一個name的屬性。

var a=new a();  alert(a.name) // 張三

var a1=new a(); alert(a1.name)//張三

js 執行過程  a.name 先找 a有沒有 name屬性,如果沒有就去原型對象裡找,

當 a有name屬性的時候就會屏蔽原型對象裡的name 屬性(這裡是屏蔽不是删除)。

如上:

var a=new a();  a.name="李四";//這是給對象a添加一個name屬性,并不是修改了原型對象的name的屬性值。

alert(a.name) //李四

當删除了 a.name (delete a.name) 屬性,再調用 a.name 又會去原型對象裡找到 “張三”。

在js中對象是區分大小的。如上: a.name //undefine

在執行個體中 有個_proto_屬性就是指向原型對象的,但是這個屬性無法顯示調用。