原型對象
系統默認自動爲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
以上查找屬性的順序,就是屬性查找鏈