1.2.4.2.瞭解原型

  • 在JavaScript中, 所有物件包括函數都有原型屬性, 這個屬性會參考到另一個物件稱為proto

    • 當物件中不到某個屬性時, 就會往原型找

    • 物件原型也可以指向另一個原型

    • 當要尋找屬性時:

      obj.prop1
      obj.prop2
      obj.prop3
    • 由於obj本身的屬性沒有prop2, prop3, JavaScript engine會向proto, proto的proto尋找屬性跟方法, 這就是原型鍊 (prototype chain):

    • 範圍鍊是尋找取用的變數, 原型鍊則是跟取用的屬性或方法有關

      • 不同的obj可以指向同一個proto

    • 範例

    var person = {
        firstname: 'Default',
        lastname: 'Default',
        getFullName: function(){
            return this.firstname + ' ' + this.lastname;
        }
    }

    var john = {
        firstname: 'John',
        lastname: 'Doe'
    }

    //don't do this
    john.__proto__ = person;
    //印出'John Doe'
    console.log(john.getFullName());
    //印出'John'
    console.log(john.firstname);

Last updated