6

以下のコードサンプルを検討し、変数の割り当てに焦点を当ててください。私はC++でそのような形式を見たことがないので、次の意味は何ですか:新しいXMLHttpRequest`の「アップロード」。

次のステートメントが何を意味するのかについての適切な説明が必要ですprogress: "upload" in new XMLHttpRequest。特に、inC++にはありません。それは何をするinことになっていますか?

tests = {
  filereader: typeof FileReader != 'undefined',
  dnd: 'draggable' in document.createElement('span'),
  formdata: !!window.FormData,
  progress: "upload" in new XMLHttpRequest
};

ありがとうございました。

4

5 に答える 5

6

第11.8.7章-inオペレーターは言う

引数ToString(lval)を使用してrvalの[[HasProperty]]内部メソッドを呼び出した結果を返します。

つまり、

(lval in rval)

rvalがオブジェクトであり、が。という名前のプロパティを持っている場合はtrueですString(lval)

infor (... in ...)ループでも使用されますが、これは同様の構文であり、この演算子の使用ではありません。


"upload" in new XMLHttpRequest

これは、「XMLHttpRequestインスタンスに「upload」という名前のプロパティがありますか?」という質問です。このブラウザに、すべてのブラウザに存在しない可能性のある特定の機能があるかどうかを効果的にチェックしています。

upload特に、XMLHttpRequestレベル2では、アップロードの進行状況を監視できるようにする特定のイベントハンドラーをサポートするオブジェクトとして指定されています。

interface XMLHttpRequestEventTarget : EventTarget {
  // event handlers
  [TreatNonCallableAsNull] attribute Function? onloadstart;
  [TreatNonCallableAsNull] attribute Function? onprogress;
  [TreatNonCallableAsNull] attribute Function? onabort;
  [TreatNonCallableAsNull] attribute Function? onerror;
  [TreatNonCallableAsNull] attribute Function? onload;
  [TreatNonCallableAsNull] attribute Function? ontimeout;
  [TreatNonCallableAsNull] attribute Function? onloadend;
};
于 2012-09-23T03:03:32.070 に答える
3

ステートメント'draggable' in document.createElement('span')はブール値を返します。draggable要素(この場合はスパン)にプロパティがあるかどうかをチェックします。プロパティtrueが返される場合は、返される場合は戻り値はfalseになります。それ以上のものはありません。

このようなコードが表示された場合:

for (varName in obj)
{
    //some stuff
}

実際に表示されているのは、オブジェクトの列挙可能なプロパティのループだけです(obj)。次のようなオブジェクトを想定します。

var obj = {foo:'bar',non:'sense'};

次に、、thenなどvarNameに等しくなります...言い換えると、「ステートメント」の主な目的は、オブジェクトの列挙可能な(パブリック)プロパティの存在を確認することです。foononx in y

于 2012-09-23T02:55:57.363 に答える
2
  • typeof FileReader != 'undefined'
    • FileReaderという名前のオブジェクトが存在する場合はtrue 、そうでない場合はfalse

  • 'draggable' in document.createElement('span')
    • <span>要素がドラッグ可能なプロパティ/メソッドを許可する場合はtrue 、そうでない場合はfalse

  • !!window.FormData
    • ウィンドウオブジェクトにFormDataという名前のプロパティ/メソッドがある場合はtrue 、そうでない場合はfalse

  • "upload" in new XMLHttpRequest
    • XMLHttpRequestオブジェクトにuploadという名前のプロパティ/メソッドがある場合はtrue 、そうでない場合はfalse
于 2012-09-23T03:11:48.270 に答える
1

'x' in y「y」に「x」という名前のプロパティが含まれている場合はtrueを返します

ちなみに、JavascriptとC++がそれほど似ていると期待すべきではありません。それらはかなり異なります。

于 2012-09-23T02:55:08.547 に答える
1
tests = {
  filereader: typeof FileReader != 'undefined',
  dnd: 'draggable' in document.createElement('span'),// Basically checks the draggable property of span
  formdata: !!window.FormData,
  progress: "upload" in new XMLHttpRequest// checking for the upload property of XMLHttpRequest/, you can add an eventlistner to check the progress event. 
};

「in」に関する限り、要素が存在するかどうかをチェックするだけです。ブール値を返します。

于 2012-09-23T03:06:45.343 に答える