天天看點

通過原型擴充對象

原型對象

系統預設自動為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
以上查找屬性的順序,就是屬性查找鍊

繼續閱讀