2

通常のファイル入力またはswfuploadへのフォールバックを使用してHTML5File(Reader)APIのラッパーを構築しています。

1つの一般関数「アップローダー」と3つのサブ関数(すべて同じスコープ内)があります

function Uploader() { }

function UploaderAPI() { }

function UploaderSWF() { }

function UploaderHTML() { }

アイデアは、を作成しvar uploader = new Uploader()、その関数が機能のサポート/構成に基づいてサブ関数の1つを呼び出すことです。

ただし、ユーザーがサブ関数の1つを直接呼び出さないようにして、代わりにUploader()でのみ使用できるようにする方法があるかどうか疑問に思いました。

アップローダースコープに移動せずにこれを実行できますか?

4

1 に答える 1

4

モジュールパターンを使用して、それらの関数を(クロージャを介して)プライベートメソッドとして定義することもできますが、これにより、関数が別のスコープ内に移動します。

例えば

var Uploader = function() {

   var UploaderAPI = function() { alert('uploaderAPI'); };

   var UploaderSWF = function() { alert('uploaderSWF');  };

   var UploaderHTML = function() {  alert('uploaderHTML'); };

   return {

      /* expose public methods here */

      publicMethodAPI : function() {
          alert('public uploaderAPI');
          UploaderAPI();
      }
   };
};

そうすることで、インスタンスと一緒にいくつかのパブリックメソッドを使用可能にし、その中でそれらの関数を使用することを選択できますが、それらを直接呼び出すことはありません。

var myupl = new Uploader();
myupl.publicMethodAPI();

例(動作中)フィドル:http://jsfiddle.net/ndQFB/

于 2012-10-17T07:39:06.587 に答える