原型對象
系統預設自動為js函數生成空的原型(prototype)對象。如果某個函數是類的構造函數,那麼它的原型對象可以被用來對類進行擴充。
當給構造函數的prototype屬性指派時,他們會自動擴充到該類的所有執行個體。
- 使用prototype屬性為對象添加屬性
eg:
<script>
function Cat(name){
this.name = name;
}
var cat1 = new Cat("zch1");
var cat2 = new Cat("zch2");
alert(cat1.name + "---" + cat2.name);
//擴充屬性與方法
Cat.prototype.action = functon(){
alert(this.name + "miao-miao---");
}
Cat.prototype.friend = "hhd";
//Object是所有對象的父親,也可以通過他來擴充屬性
Object.prototype.Animal = "you are a animal!";
cat1.action();
cat2.action();
alert(cat1.friend + "---" + cat2.friend);
alert(cat1.animal);
</script>
原型查找鍊
在程式擷取對象的屬性時,js會首先檢視該屬性是否直接定義在那個對象中。
其查找順序以Cat對象為例:
以上查找屬性的順序,就是屬性查找鍊
- 對象自身,就像cat1,cat2
- Cat.prototype
- Object.prototype