2016-04-28 116 views
0

我決定用JavaScript來「更深入」,並且在ECMA6之前嘗試掌握ECMA5技巧,現在我被對象創建和初始化困住了,什麼版本更好,更實用,更好閱讀等。 哪一個堅持並用作基礎。那麼什麼,我嘗試:JavaScript和對象初始化

版本1,並且是最流行的谷歌搜索

;(function() { 
    var magic = magic || {}; 

    magic.doStuff = function() { 
     alert('Magic'); 
    }; 

    window.magic = magic; 
    document.addEventListener('DOMContentLoaded', function() { 
     magic.doStuff(); 
    }, false); 

})(); 

2版,頗有爲第1版,只是一點點不同的語法相同發現導遊

(function() { 
    var magic = { 
     doStuff: function() { 
      alert('Magic'); 
     } 
    }; 

    document.addEventListener('DOMContentLoaded', function() { 
     magic.doStuff(); 
    }, false); 
})(); 

版本3,這一個對我來說是最糟糕的,語法困難,錯誤空間更大,我甚至不確定它是否寫得相關ctly

(function() { 
    var magic = (function() { 
     magic.doStuff = function() { 
      alert('Wow!'); 
     }; 

     return magic; 
    }); 

    document.addEventListener('DOMContentLoaded', function() { 
     (new magic()).doStuff(); 
    }, false); 
})(); 

4版,這是一個由資深開發出對我來說,沒有導遊這麼流行,或者它只是我沒有注意到這一點,但一些解釋後,可能是我的最愛。

(function() { 
    var magic = (function() { 
     function publicDoStuff() { 
      alert('Magic'); 
     } 

     return { 
      doStuff: publicDoStuff 
     }; 
    })(); 

    document.addEventListener('DOMContentLoaded', function() { 
     magic.doStuff(); 
    }, false); 
})(); 
+0

版本1,2,3混合起來'魔術「和」魔術「。 – str

+0

修正了,謝謝 – MyMomSaysIamSpecial

回答

1

我喜歡保持簡單簡單對象

var magic = { 
    doStuff: function() { 
     alert('Wow!'); 
    }, 
}; 

document.addEventListener('DOMContentLoaded', function() { 
    magic.doStuff(); 
}, false); 

如果你使用一個對象的多個實例,然後its faster to use prototype

Magic = function() { 
}; 

Magic.prototype.doStuff = function() { 
    alert('Wow!'); 
};