淺談prototype和構造函數

構造函數

    function Animal(name) {
        this.name = name;
        this.eat = function() {
            console.log(this.name + "吃老鼠");
        }
    }
    var a = new Animal('貓');
    var b = new Animal('狗');
    console.log(a.eat == b.eat);    //false


構造函數生成的對象實例中的方法eat,在各自的實例上面都創建為新的函數,兩個函數各自引用自己的內存,造成資源的浪費

prototype

function Person(name) {
        this.name = name;
    }
    Person.prototype.eat = function() {
        console.log(this.name + '吃早餐');
    }
    var aa = new Person('張三');
    var bb = new Person('李四');
    console.log(aa.eat == bb.eat); //true
張三

李四

prototype生成的對象實例中的方法eat,共同引用Person原型上面的eat方法,節省資源

總結

推薦使用prototype創建對象,更節省內存,更有效率。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 普通創建對象和字面量創建對象不足之處:雖然 Object 構造函數或對象字面量都可以用來創建單個對象,但這些方式有...
    believedream閱讀 2,429評論 2 18
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,765評論 18 399
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結起來就是把...
    Dove_iOS閱讀 27,210評論 30 471
  • 2017.1.6 新郎叫何裕靖,水瓶座。新娘叫鄭瑩瑩,雙子座。 哈哈,我來分享下他們的故事吧。 新娘是婚禮提前幾...
    NIU小丫閱讀 1,177評論 0 3
  • 世界上沒有人是一座孤島。 書中的主人翁是島上書店的店主,我覺得這真是一個幸運的人,原本的孤島給了他...
    eagle0736閱讀 116評論 0 0