javascript
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
javascript [2011/12/26 14:48] – [ECMAScript] nullpon | javascript [2015/07/29 10:01] (現在) – nullpon | ||
---|---|---|---|
行 1: | 行 1: | ||
====== JavaScript ====== | ====== JavaScript ====== | ||
- | JavaScriptはオブジェクト指向スクリプト言語。主にブラウザ上でDHTMLの実現、ユーザ操作の補助、Ajaxと呼ばれる手法で高度なWebアプリケーション作成に利用される。 | + | JavaScriptはオブジェクト指向スクリプト言語。 |
+ | |||
+ | Webブラウザ上で動作するスクリプト言語として主に使用されてきたが、node.jsの登場よってWebアプリケーションのサーバサイド実装にも利用されるようになってきた。 | ||
+ | |||
+ | ページ整理中 | ||
+ | |||
+ | * [[JavaScript]] 名前空間は主にブラウザで動作するJavaScriptの話題を扱う | ||
+ | * 言語仕様的な話は [[ECMAScript]] 名前空間で | ||
+ | * node.jsの話は [[nodejs]] 名前空間で | ||
===== 仕様 ===== | ===== 仕様 ===== | ||
+ | |||
* ECMAScript - 言語仕様。 | * ECMAScript - 言語仕様。 | ||
* DOM - XMLやHTMLを扱うためのAPI仕様。表示されているHTML文書のDOMをJavaScriptで操作することでWebページを操作する。 | * DOM - XMLやHTMLを扱うためのAPI仕様。表示されているHTML文書のDOMをJavaScriptで操作することでWebページを操作する。 | ||
* E4X - JavaScript中で直接XMLを扱うためのECMAScript拡張仕様、ブラウザによっては全く動かないのであまり使われていない。 | * E4X - JavaScript中で直接XMLを扱うためのECMAScript拡張仕様、ブラウザによっては全く動かないのであまり使われていない。 | ||
- | ==== ECMAScript | + | ECMAScriptにはHTML文書の操作(DHTML)の仕様は定められていない。DHTMLに関する仕様はw3cのDOMによって決められている。 |
- | + | ||
- | * [[javascript: | + | |
- | + | ||
- | JavaScriptの言語仕様部分。最新の仕様はECMA-262 5th Editionで文書化されている。現在の主要なブラウザが実装している仕様はECMAScript 3rd Editionであるが、最新のブラウザでは既に5thの一部の仕様が実装されている。 | + | |
- | + | ||
- | * [[http:// | + | |
- | * [[http:// | + | |
- | + | ||
- | ECMAScriptは言語仕様であり、HTML文書の操作(DHTML)の仕様は一切定められていない。DHTMLに関する共通仕様はW3CのDOMによって決められている。 | + | |
* ネイティブオブジェクト - 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) ===== | ||
行 56: | 行 29: | ||
* [[javascript: | * [[javascript: | ||
* [[javascript: | * [[javascript: | ||
+ | |||
===== Ajax (Asynchronous JavaScript and XML) ===== | ===== Ajax (Asynchronous JavaScript and XML) ===== | ||
* [[ajax]] | * [[ajax]] | ||
行 64: | 行 38: | ||
* [[javascript/ | * [[javascript/ | ||
- | ===== 実行環境 ===== | ||
- | ==== ECMAScriptの処理系 ==== | ||
- | * [[https:// | ||
- | * JScript - WSH(Windows付属のスクリプト実行環境)、IEのJavaScriptエンジン、ASPの記述言語として利用される。WSHはWindowsコマンドプロンプト上で実行できる他、.js拡張子のスクリプトをダブルクリックで実行可能。最新版では、ActiveXオブジェクトや、.NETクラスライブラリを使うこともできる。 | ||
- | |||
- | ==== ブラウザのJSエンジン ==== | ||
- | |||
- | * SpiderMonkey - Firefox3のJavaScriptエンジン | ||
- | * TraceMonkey - Firefox3.1、JIT技術による大幅な高速化 | ||
- | * JavaScriptCore - Safari | ||
- | * Nitro - Safari4 (SquirrelFish Extremeから改名?) | ||
- | * V8 - Google Chrome | ||
- | |||
- | ===== ライブラリ ===== | ||
- | 言語機能拡張、ウィジェット・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.1324910919.txt.gz · 最終更新: 2011/12/26 14:48 by nullpon