js中使用使用原型(prototype)定義方法的好處

常常在前端面試或是和其餘同行溝通是,在談到構造在JS定義構造函數的方法是最好使用原型的方式:將方法定義到構造方法的prototype上,這樣的好處是,經過該構造函數生成的實例所擁有的方法都是指向一個函數的索引,這樣能夠節省內存。前端

固然,這種說法沒有任何問題,只是在實現上,並不是只有使用prototype的方式才能達到這樣的效果,咱們能夠將方法以函數的形式定義在構造函數以外,而後在構造函數中經過this.method = method的方式,這樣生成的實例的方法也都經過索引指向一個函數,具體以下:面試

// 不使用原型定義方法:
(function() {
    function Constractor() {
        this.method1 = method1;
        this.method2 = method2;
    }

    function method1() {
    }

    function method2() {
   }
})();

通常使用原型定義時代碼以下:函數

(function () {
    function Constractor() {
    }

    Constactor.prototype = {
        method1: function() {
        },
        method2:  function() {
        }
    };
    
    // 或者
    Constactor.prototype.method1 = function() {
    };
    Constactor.prototype.method2 = function() {
    };

})();

理論和實現都沒有什麼高深的,只是爲了達到一樣的目的,能夠經過不一樣的途徑,只是此種方式在使用instanceOf運算符來判斷繼承關係時就不奏效了。this

相關文章
相關標籤/搜索