javascript
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
javascript [2015/04/28 01:50] – nullpon | javascript [2015/07/29 10:01] (現在) – nullpon | ||
---|---|---|---|
行 9: | 行 9: | ||
* 言語仕様的な話は [[ECMAScript]] 名前空間で | * 言語仕様的な話は [[ECMAScript]] 名前空間で | ||
* node.jsの話は [[nodejs]] 名前空間で | * node.jsの話は [[nodejs]] 名前空間で | ||
- | |||
- | ===== 特徴 ===== | ||
- | |||
- | * 動的型付け | ||
- | * プロトタイプベース(インスタンスベース)オブジェクト指向 | ||
- | * ファーストクラス関数/ | ||
- | * 非同期処理、イベント駆動型 | ||
- | |||
- | 多くの処理系がシングルスレッドであるため、シングルスレッド前提のプログラミング手法を用いる。イベント駆動型の非同期処理はコードが処理が追いにくく複雑になりやすいが、クロージャによって容易な記述が可能になる。 | ||
===== 仕様 ===== | ===== 仕様 ===== | ||
行 25: | 行 16: | ||
* E4X - JavaScript中で直接XMLを扱うためのECMAScript拡張仕様、ブラウザによっては全く動かないのであまり使われていない。 | * E4X - JavaScript中で直接XMLを扱うためのECMAScript拡張仕様、ブラウザによっては全く動かないのであまり使われていない。 | ||
- | ==== ECMAScript ==== | + | ECMAScriptにはHTML文書の操作(DHTML)の仕様は定められていない。DHTMLに関する仕様はw3cのDOMによって決められている。 |
- | + | ||
- | ECMAScriptはJavaScriptの言語仕様を標準化したもの。ECMA Internationalによって標準化されている。 | + | |
- | + | ||
- | * [[http:// | + | |
- | * [[http:// | + | |
- | + | ||
- | + | ||
- | 最新の仕様はECMA-262 5th Edition、次期標準である6th Editionが策定されており、2014年末頃に完了の予定 | + | |
- | + | ||
- | * [[javascript: | + | |
- | * [[javascript: | + | |
- | + | ||
- | + | ||
- | ECMAScriptにはHTML文書の操作(DHTML)の仕様は定められていない。DHTMLに関する仕様はw3cのDOMによって決められている。またHTML5と呼ばれるJavaScript APIもw3cが決めている。 | + | |
* ネイティブオブジェクト - ECMAScript仕様で定義されているオブジェクト。StringやArray。 | * ネイティブオブジェクト - ECMAScript仕様で定義されているオブジェクト。StringやArray。 | ||
* ホストオブジェクト - 実行環境が提供するオブジェクトでECMAScriptの仕様外のもの。windowやDOMオブジェクト、XMLHttpRequest。 | * ホストオブジェクト - 実行環境が提供するオブジェクトでECMAScriptの仕様外のもの。windowやDOMオブジェクト、XMLHttpRequest。 | ||
- | DOM以外のホストオブジェクト(window、navigator、location、history 等)には標準仕様がなく各ブラウザベンダが互いに様子見したり、協力しつつ実装しているようだ。ただ、XMLHttpRequestについては[[html: | + | DOM以外のホストオブジェクト(window、navigator、location、history 等)には標準仕様がなく各ブラウザベンダが互いに様子見したり、協力しつつ実装しているようだ。新しいAPIについてはwhatwgによって仕様化が進められている。 |
- | |||
- | |||
- | ==== プロトタイプベースオブジェクト指向 ==== | ||
- | Java等のオブジェクト指向はクラスベースのオブジェクト指向と呼ばれる。一方、JavaScriptはプロトタイプベース、あるいはインスタンスベースオブジェクト指向と呼ばれる。 | ||
- | |||
- | クラスベースは、まず振る舞いとデータをクラスとして定義し、クラスを型とするインスタンスを作成する。そしてクラスで定義した操作を組み合わせてプログラミングする。プロトタイプベースでは、まずインスタンスを作成し、そのインスタンスに独自の性質を付加してプログラミングする。また別のインスタンスをプロトタイプとすることでプロトタイプとなったインスタンスの性質を引き継ぐことができる。 | ||
- | |||
- | クラスに縛られないため、実行中の任意の場所でプロパティやメソッドをオブジェクト毎に変更したり、新しく追加したり、削除したりすることができる。これはStringやwindow等のビルトインオブジェクトも例外ではなく、同じStringのオブジェクトでもオブジェクトごとに別の振る舞いを持たせる事もできる | ||
- | <code javascript> | ||
- | var a = new String(" | ||
- | var b = new String(" | ||
- | b.toString = function() { return this.valueOf() + " | ||
- | |||
- | console.log(a.toString()); | ||
- | console.log(b.toString()); | ||
- | </ | ||
- | |||
- | ===== JavaScript言語 ===== | ||
- | * [[javascript: | ||
- | * [[javascript: | ||
- | * [[javascript: | ||
- | * [[javascript: | ||
- | * [[javascript: | ||
- | |||
- | * [[javascript: | ||
- | |||
- | ===== TIPS ===== | ||
- | * [[javascript: | ||
- | * [[javascript: | ||
===== DOM (Document Object Model) ===== | ===== DOM (Document Object Model) ===== | ||
行 90: | 行 38: | ||
* [[javascript/ | * [[javascript/ | ||
- | ===== 実行環境 ===== | ||
- | ==== ECMAScriptの処理系 ==== | ||
- | |||
- | * Rhino - Javaで書かれたJavaScriptエンジン、JDKに付属 | ||
- | * Nashorn - JDK8でRhinoに代わって搭載予定 | ||
- | * JScript - IEのJavaScriptエンジン、ASPの記述言語、WSHの記述言語として利用される。 | ||
- | * V8 - ChromeのJavaScript処理系、node.jsのJS処理系としても使われている。CrankshaftというJITコンパイラを搭載している。 | ||
- | * JavaScriptCore - Safari、iOSのJavaScript処理系。 | ||
- | * SpiderMonkey - Firefox、IonMonkeyと呼ばれる高速なJITコンパイラを搭載している | ||
- | |||
- | ===== ライブラリ ===== | ||
- | 言語機能拡張、ウィジェット・GUIコンポーネントの提供、クロスブラウザ、Ajax処理の簡易化等の機能を提供する。 | ||
- | ^ ライブラリ ^ ライセンス ^ メモ ^ | ||
- | | [[http:// | ||
- | | [[http:// | ||
- | | [[http:// | ||
- | | [[http:// | ||
- | | [[http:// | ||
- | | [[jQuery]] | [[http:// | ||
- | | [[http:// | ||
- | | [[http:// | ||
- | | [[http:// | ||
- | | [[http:// | ||
- | |||
- | |||
- | その他 | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | |||
- | * [[http:// | ||
- | |||
- | 巨大ライブラリで通信負荷が気になる場合は、Gzip圧縮転送などを使う。 | ||
- | |||
- | ==== Google AJAX Libraries API ==== | ||
- | GoogleのサーバからjQuery等の各種ライブラリを取得できる。これを用いる事で開発者にはダウンロード設置の手間が省け、運用では負荷の低減、ユーザにはライブラリのキャッシュヒットの可能性が高くなり、高速化が期待できる(かも…) | ||
- | |||
- | http:// | ||
- | |||
- | 直接読み込む | ||
- | <script src=" | ||
- | |||
- | googleのライブラリを通して取得する | ||
- | <script src=" | ||
- | < | ||
- | google.load(" | ||
- | </ | ||
- | |||
- | ==== JavaScript WYSIWYGエディタ ==== | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | |||
- | [[http:// | ||
- | jwysiwygはjQueryプラグインとして提供されるライブラリ。 |
javascript.1430185853.txt.gz · 最終更新: 2015/04/28 01:50 by nullpon