2016-07-24 6 views
0

まず、私はちょうど今登録していますが、まずこのウェブサイトから多くの助けを得ています。ここに彼らの知識を共有するすべての人々のためにありがとう!javascript "=>" operator

私はちょうどFirefoxのアドオンを構築するために1週間JavaScriptを学び始めますので、私と一緒に裸にしてください、私のnoobishの質問とsoso英語の文法のために申し訳ありません。
https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Unit_testing
上記のMDNからのリンクでは、Firefoxのアドオンを開発するための単体テストの記述方法について説明しています。しかし、私は理解していないいくつかのセグメントがあり、Googleを検索した後に有用な結果を見つけられませんでした。
最初の1:
次は、上記のリンクからqauted段落です:

Webページで、あなたは btoa()とATOB()関数を使用してBase64エンコーディングとデコーディングを行うことができます。残念ながら、これらの関数は がウィンドウオブジェクトにアタッチされています。このオブジェクトは メインアドオンコードで使用できないため、atob()およびbtoa()も使用できません。したがって、 プラットフォームの プラットフォームからこれらの機能を公開するbase64モジュールを作成します(再利用可能モジュールの作成を参照)。

上記の段落の「プラットフォーム」とは何ですか? "Services.jsm"?次のコードでも
const { atob, btoa } = require("resource://gre/modules/Services.jsm");

これは他のクラスのために利用できるサービスの一つとしてATOBとbtoaを作りますか? atobとbtoaを両方ともServices.jsmに参照させる(定数変数)?

第2のもの: これらの2行のコードは何ですか?
exports.atob = a => atob(a);<br /> exports.btoa = b => btoa(b);
は、私が一部「base64.js」外、他のクラスから利用できるようにATOB機能を有効に
exports.atob
を理解しています。
しかし、次の意味は何ですか?
= a => atob(a);
javascriptに "=>"演算子が見つかりませんでした。

私の説明から、base64.jsを作成するのは、atobとbtoaはウィンドウオブジェクトがある場合にのみ呼び出すことができるからです。したがって、Services.jsmを使用してウィンドウオブジェクトの参照を取得できますか?

ありがとうございます!

答えて

0

あなたが引用した段落の「プラットフォーム」は、厳密にはFirefoxのブラウザコードではなく、むしろ基本的な共有機能を実装する機能のセットを意味します。これは通常、mozilla-centralリポジトリのtoolkit/modulesにあります。 Services.jsmもそこに住んでいます。それはプラットフォームの一部です。さらに、atobbtoaはともにServices.jsmからインポートされます。

矢印=>exports.atob = a => atob(a);は、arrow functionという名前を定義しています。これは、JavaScriptで関数を定義するための新しい短い構文です。 This SO答えはそれに関する多くの有益な情報を持っています。

atobとbtoaは、私たちがwindowオブジェクトを持っている場合にのみ呼び出すことができるので、私がbase64.jsを作成する理由はわかりました。したがって、Services.jsmを使用してウィンドウオブジェクトの参照を取得できますか?

これはほぼ正しいことです。そこにウィンドウオブジェクトを持たないので、基本となるプラットフォームから関数をエクスポートする必要があります。あなたがウィンドウオブジェクトを持っていたなら、あなたはちょうどwindow.atobかそのようなことをしたでしょう。その呼び出しでも、Services.jsmからインポートしたのと同じ機能が呼び出されていました。

Windowオブジェクトへの参照を取得するのにServices.jsmを使用せず、必要な関数を直接インポートしてウィンドウオブジェクトを持たないようにします。

+0

詳細な説明をありがとうございました!
Services.jsmがhttps://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/btoa windowbase64に接続するすべての関数をエクスポートするためのブリッジだと言えますか? – ganor

+0

Grrrr ...私は5minsのコメントを編集することができます、この次のコメントを申し訳ありません! Services.jsmを使用して、ウィンドウ関連のオブジェクトがないと使用できないすべての関数をエクスポートできますか?それともケースバイケースの状況ですか? フォーラムで「=>」と答えられたとは思えません。私は検索 "=>"と何も現れなかった...本当に感謝します! – ganor

+0

問題ありません! Services.jsmを使用すると、そこに定義されているすべての関数をエクスポートすることができます。 – Dexter

関連する問題