標籤:其他屬性 turn 一個 img object src 隱藏 new 分享圖片
上文中提到對象是函數建立得,而函數也是一種對象。對象就是屬性的集合,沒有方法。
每個函數都有一個屬性——prototype。
這個prototype的屬性值是一個對象(屬性的集合),預設有一個constructor屬性,指向這個函數本身。
中,superType是一個函數,這個函數有個prototype屬性,該屬性的屬性值又是一個對象,這個對象預設有個constructor屬性,這個屬性的屬性值指向函數本身。
如,superType是一個函數,右側的方框就是它的原型。
原型作為對象,屬性的集合,預設有個constructor屬性,有的還有其他屬性。比如object的原型裡面就有好幾個其他屬性。
同時也可以在自己自訂的方法的prototype中新增自己的屬性
1 function Fn(){};2 Fn.prototype.name=‘張三‘;3 Fn.prototype.getYear=function () {4 return 1988;5 };
從畫的結構圖就可以看出自己手動添加的name屬性和getYear方法被添加到了prototype原型中。再看下面的例子
1 function Fn(){};2 Fn.prototype.name=‘張三‘;3 Fn.prototype.getYear=function () {4 return 1988;5 };6 var fn=new Fn();7 console.log(fn.name);8 console.log(fn.getYear());
Fn是一個函數,fn對象是從Fn函數new出來的,這樣fn對象就可以調用Fn.prototype中的屬性和方法。
每個對象都有一個隱藏的屬性——_proto_,這個屬性引用了建立這個函數的原型,即fn._proto_ === Fn.prototype
這裡的_proto_稱之為對象的隱式原型。
深入理解javascript原型和閉包(3)——prototype原型