JavaScript使用prototype的用法

Javascript的物件分為一般物件和function物件,使用function物件時,需要使用關鍵字new初始化才能使用。定義function物件時,如果你希望能自訂一些方法讓所有初始化後的物件都能使用,這時就要用prototype了。


如果有一個function A,我們定義function A有一個method a,然後在利用prototype定義一個method b。
function A() {
    // ...
}

A.a = function(){
    return "a";
};
A.prototype.b = function(){
    return "b";
};
定義完後,我們執行method a和b,會發現method b會是undefined
A.a();  // return "a"
A.b();  // undefined
而我們把function A初始化後呼叫method b就正確,所以利用prototype定義的method b必須在初始化後才能使用。
A.a();  // return "a"
(new A).b();  // return "b"
這是因為function物件的constructor的作用是將物件的prototype設定給新初始化的物件。而以下兩種作法效果會是一樣,而作法2是利用this指向function物件的用有者。
function A() {
    // ...
}
A.prototype.a = function(){};

function A() {
    this.a = function(){};
}

留言

熱門文章