我有一个用于创建 Menu 对象的 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 在第二个示例的底层做了什么。