5個原型規則

5個原型規則

  • 所有的引用類型(數組,對象,函數),都具有對象特性,即可自由擴展屬性(除了null以外)

  • 所有的引用類型(數組,對象,函數),都有一個_ proto _(隱式原型)屬性,屬性值是一個普通對象

  • 所有的函數,都有一個prototype(顯式原型)屬性,屬性值也是一個普通對象

  • 所有的引用類型(數組,對象,函數),_ proto _屬性值指向他的構造函數的prototype屬性

  • 當試圖得到一個對象的某個屬性時,如果這個對象本身沒有這個屬性,那麼會去它的_ proto _(即它的構造函數的prototype)

    例:

    // 構造函數
    function Foo(name) {
        this.name = name
    }
    Foo.prototype.alertName = function() {
        alert(this.name)
    }
    // 創建示例
    var f = new Foo('zhangsan')
    f.printName = function () {
        console.log(this.name)
    }
    // 測試
    f.printName()
    f.alertName()
    

    原型鏈

    示例中 f.alertName()就需要到f._proto_中也就是Foo.prototype(Foo的原型對象)中查找

    f.toString()就要去f._proto_._proto_中查找

原型鏈

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章