ユーザ用ツール

サイト用ツール


ecmascript

ECMAScript

引っ越し&見直し中

ECMAScriptはEcma Internationalによって標準化されたスクリプト言語。ブラウザ上で動作するJavaScriptの言語仕様である。

2015年9月時点での最新の仕様はECMA-262 6th Edition

特徴

  • 動的型付け
  • プロトタイプベース(インスタンスベース)オブジェクト指向
  • ファーストクラス関数/クロージャ
  • 非同期処理、イベント駆動型

多くの処理系がシングルスレッドであり、I/O待ちの間にCPUバウンドな処理を実行することで処理効率を向上させる。このため計算量の多いプログラムでは実行効率が低下することが多い。

イベント駆動型の非同期処理はコードが処理が追いにくく複雑になりやすいが、クロージャによって容易な記述が可能になる。

プロトタイプベースオブジェクト指向

Java等のオブジェクト指向はクラスベースのオブジェクト指向と呼ばれる。一方、JavaScriptはプロトタイプベース、あるいはインスタンスベースオブジェクト指向と呼ばれる。

クラスベースは、まず振る舞いとデータをクラスとして定義し、クラスを型とするインスタンスを作成する。そしてクラスで定義した操作を組み合わせてプログラミングする。プロトタイプベースでは、まずインスタンスを作成し、そのインスタンスに独自の性質を付加してプログラミングする。また別のインスタンスをプロトタイプとすることでプロトタイプとなったインスタンスの性質を引き継ぐことができる。

クラスに縛られないため、実行中の任意の場所でプロパティやメソッドをオブジェクト毎に変更したり、新しく追加したり、削除したりすることができる。これはStringやwindow等のビルトインオブジェクトも例外ではなく、同じStringのオブジェクトでもオブジェクトごとに別の振る舞いを持たせる事もできる

var a = new String("JavaScript");
var b = new String("JavaScript");
b.toString = function() { return this.valueOf() + "にゃー"; };
 
console.log(a.toString());  // "JavaScript"
console.log(b.toString());  // "JavaScriptにゃー"

言語仕様

TIPS

ECMAScriptの処理系

  • Rhino - Javaで書かれたJavaScriptエンジン、JDKに付属
  • Nashorn - JDK8でRhinoに代わって搭載予定
  • JScript - IEのJavaScriptエンジン、ASPの記述言語、WSHの記述言語として利用される。
  • V8 - ChromeのJavaScript処理系、node.jsでも採用。CrankshaftというJITコンパイラを搭載している。
  • JavaScriptCore - iOS、OSXに搭載されているJavaScript処理系。Safariで使用。
  • SpiderMonkey - Firefox、IonMonkeyと呼ばれる高速なJITコンパイラを搭載している
ecmascript.txt · 最終更新: 2015/10/24 04:31 by nullpon