我爲創建菜單一個JavaScript模塊對象最初設計是這樣的:javascript原型的這個不好用嗎?
// original Menu module
function Menu () {
alert ("Menu ()");
}
Menu.prototype.init = function () {
alert ("Menu.init ()");
}
var menu = new Menu;
我現在想換我的API裏面,像這樣
// new API containing Menu
(function ($api, window, undefined) {
$api.Menu = function () {
alert ("$api.Menu ()");
};
$api.Menu.prototype.init = function () {
alert ("$api.Menu.init ()");
};
}(window.$api = window.$api || {}, window));
var menu = new $api.Menu;
這似乎是工作,但我的問題是,是否這是對的?例如,這最終會爲每個$ api.Menu實例重複每個原型函數?
我問,因爲我總是使用第一種方法的原型,而我只是不確定Javascript在第二個例子中的底層操作。
在第二個例子中,你只是在一個只調用一次的函數內執行類似的代碼 - 所以任何一種方式都可以正常工作。第二種方式明顯地把對象放在你的命名空間中,但除此之外,它們都工作正常。 – jfriend00
非常好。感謝您的快速響應。 – user2337247