Microsoft PowerPoint - JavaScript.pptx

Similar documents
Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

プログラミング基礎I(再)

第7回 Javascript入門

Java講座

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤

目次 はじめに 4 概要 4 背景 4 対象 5 スケジュール 5 目標点 6 使用機材 6 第 1 章 C# 言語 7 C# 言語の歴史 7 基本構文 8 C 言語との違い 9 Java 言語との違い 10.Netフレームワーク 10 開発資料 10 第 2 章 Mono 11 Monoの歴史 1

02: 変数と標準入出力

JavaプログラミングⅠ

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

前ページからの続き // テキストボックス02 id 属性で取得 // id 属性で取得する場合は一意に決まるので 何番目かの指定は不要 var textbox02elem = document.getelementbyid("text_box02_id"); if ("001" == statee

JavaプログラミングⅠ

PowerPoint プレゼンテーション

Microsoft PowerPoint - 09.pptx

Javaプログラムの実行手順

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

JavaScript 演習 2 1


intra-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド   初版  

JavaプログラミングⅠ

プログラミング実習I

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

メディプロ1 Javaプログラミング補足資料.ppt

Javaの作成の前に

Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

PowerPoint プレゼンテーション

Si 知識情報処理

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 関数とメソッド 関数とメソッド Python には関数 (function) とメソッド (method) が有る モジュール内に def で定義されて居る物が関数 クラス内に def で定義されて居る物がメソッドに成る ( 正確にはクラスが

メソッドのまとめ

sinfI2005_VBA.doc

PowerPoint プレゼンテーション

オブジェクト指向プログラミング・同演習 5月21日演習課題

JAVA入門

Microsoft PowerPoint - chap10_OOP.ppt

プログラミング入門1

第 2 章 PL/SQL の基本記述 この章では PL/SQL プログラムの基本的な記述方法について説明します 1. 宣言部 2. 実行部 3. 例外処理部

JUnit 概要 2015/4/16 版今泉俊幸 2015 bbreak Systems 1

フローチャート自動生成ツール yflowgen の使い方 目次 1 はじめに 本ツールの機能 yflowgen.exe の使い方 yflowgen.exe の実行方法 制限事項 生成したファイル (gml ファイル形式 ) の開

生成された C コードの理解 コメント元になった MATLAB コードを C コード内にコメントとして追加しておくと その C コードの由来をより簡単に理解できることがよくありま [ 詳細設定 ] [ コード外観 ] を選択 C コードのカスタマイズ より効率的な C コードを生成するベストプラクテ

文字列操作と正規表現

Microsoft PowerPoint - lec10.ppt

Transcription:

Ajax や 来るべき HTML5 時代に向けて 大規模な JavaScript 開発にも耐えられる基礎をおさえる JavaScript をなんらか入門したことのある方を対象 山田祥寛 yoshihiro@wings.msn.to http://www.wings.msn.to/ 汎用的なコア JavaScript の理解を深めることが目的 ブラウザオブジェクト Ajax などは扱いません なるべく考え方を中心に説明するので 端折るところもありますが 気軽に質問してください 習得が容易なスクリプト言語 初心者が馴染みやすい オブジェクト指向構文も持ち 本格的な開発にも使える トライ & エラーが簡単なインタプリタ言語 動作の遅さも JavaScript エンジンの高速化で改善 さまざまな環境で動作する JavaSE 6 Flash(ActionScript) WSH Node.js コア JavaScript すべてのJavaScript 環境で利用可能 制御構文 関数 オブジェクトなどの基本機能 組み込みオブジェクト基本機能を備えたオブジェクト Array String Date RegExp 特定の環境 ( たとえばブラウザ上 ) でのみ利用可能な機能 ブラウザオブジェクトブラウザ環境で利用可能なオブジェクト Window Navigator Location Screen etc... DOM オブジェクト HTML/XML 操作のためのオブジェクト群 Number Error etc... Ajax オブジェクト Ajax 動作のためのXMLHttpRequest 機能

<script> タグで囲む src 属性で外部化も可能 <script> タグの記述位置 文 (Statement) のルール セミコロンは任意だが必須 特に次の文が () の場合などは危険! コメント 複数行コメントには要注意 /* var reg = /.*/; */ 変数 変数の宣言は任意だが必須 最低限の規則 読みやすいコードのための規則 ただし 例外もあり ( カウンタ変数など ) 変数名は camelcase 記法 クラス名は Pascal 記法 JavaScript はデータ型に寛容な言語 でも 本格的な開発にはデータ型の理解は重要 参照型 (array object function) 基本型 ( その他 ) リテラル表現 データ型に格納できる値そのもの またはその表現方法 JavaScript はリテラルでなんでも表現する言語 配列や関数 正規表現 オブジェクトまで

数値リテラル n 進数 指数表現などでも見かけ上の違いだけ 文字列リテラル シングルクォートでの囲みが基本 配列リテラル 連想配列リテラル オブジェクトと連想配列は同じもの ドット構文とブラケット構文 ( 厳密には等価でない ) 算術演算子 文字列 / 数値混在の演算に注意 前置演算 後置演算で結果が違う 小数点演算の誤差 代入演算子 参照型の代入はアドレスのコピー 比較演算子 参照型の比較はアドレスの比較 等価演算子と同値演算子 ( 親切はできるだけ排除 ) 論理演算子 空文字列 0 NaN null undefined は false 0 や [] {} は true なので注意 ショートカット演算 var win = sub_win window; 三項演算子 var chkbox = <input type= checkbox name= chk + (ischecked? ' checked' : '') + ' />'; 優先順位 & 結合則 優先順位は明確に 複雑な式ではできるだけ丸カッコを使う 結合則は 直感的に当たり前のことばかり オブジェクトと連想配列は同じものだけど オブジェクトはモノそのもの 連想配列はモノの集合体 オブジェクトは プロパティとメソッドの集合 正確には JavaScript にはメソッドは存在しない 組み込みオブジェクト あらかじめ JavaScript で用意されたオブジェクト

ラッパーオブジェクト 基本データ型にオブジェクトとしての体裁を与える Object Array String Boolean Number Function JavaScript ではリテラルがそのままオブジェクトになる ラッパーオブジェクトは使わない (not 使う必要がない ) var ary = new Array(10); var x = new Boolean(false); if (x) { window.alert( true ); } 文字列連結のテクニック + 演算子は使わない var data = []; for (var i = 0; i < items.length; ++i) { data[i] = hogehoge(items[i]); } var str = data.join(''); Global オブジェクト グローバル変数 関数を管理する便宜的なオブジェクト たとえば parsefloat(x) のようにそのままメソッドを呼び出せる 関数の定義方法は 3 つ function 命令 Function コンストラクタ 関数リテラル 関数定義 / 利用の注意点 return 命令は改行しない 関数はデータ型の一種である function は静的な構造 Function/ 関数リテラルは実行時に評価 スコープは 2 種類 ( グローバル & ローカル ) スコープの異なる変数は同名でも別もの 変数宣言に var が必須なわけ ローカル変数の有効範囲は解りにくい できるだけ関数の先頭での宣言が望ましい 参照渡しには要注意 ブロックスコープは存在しない 関数リテラル Function オブジェクトではスコープが異なる

JavaScript は引数の省略は自由 引数はすべて arguments オブジェクトに格納される arguments オブジェクトの役割 引数の個数チェック 可変長引数の関数を定義 ( 引数 opt_~ など ) 再帰呼び出し 名前付き引数 オブジェクトリテラルで引数を渡す 高階関数 = 関数を引数 戻り値とする関数 処理の大まかな枠組みだけを提供 たとえば $.eachという命令の例 var data = [1, 2, 4, 8, 16]; function showelement(key, value) { document.writeln(key + ':' + value); } 引数としてインデックス 値を受け取る関数 $.each(data, showelement); 匿名関数 使い捨ての関数に名前を付けるのは無駄 高階関数には匿名関数を使う スコープチェーン Global オブジェクト = グローバル変数 関数を管理 Call オブジェクト = ローカル変数を管理 クロージャー ローカル変数を参照している関数内関数 シンプルなオブジェクトのようなもの 参考 ) http://jibbering.com/faq/notes/closures/#clsto プロトタイプベースのオブジェクト指向 プロトタイプ = オブジェクトの元となるオブジェクト 縛りの弱いクラス 関数オブジェクトがコンストラクタを表す Pascal 記法で命名 (member ではなく Member) this. プロパティ名 = 値 でプロパティを初期化 this. プロパティ名 = 関数 でいわゆるメソッドを表現 メソッドはインスタンスに追加することもできる ( 緩い )

コンストラクタによるメソッド追加は無駄が多い インスタンスの数だけメソッドをコピー メソッドは prototype プロパティの配下で宣言する プロトタイプを使うメリット メモリの利用量を節減できる メンバの追加や変更をリアルタイムに認識できる プロトタイプの注意点 プロパティをプロトタイプに設定したら? プロパティを削除したら すべてのインスタンスに影響? インスタンス単位でプロパティを無効化するには undefined プロトタイプはオブジェクトリテラルで宣言 組み込みオブジェクトのプロトタイプ拡張は NG( 特に Object) Class.method(args, ) の形式で呼び出せる クラスに対して直接メンバーを追加する 静的メンバーの注意点 静的プロパティは読み取り専用 this キーワードは使わない 静的メンバーを定義するわけ 名前の競合を防ぐ ( グローバル変数 関数は少なく ) 例. jquery のグローバルメンバは $ jquery のみ プロトタイプチェーン = 継承のしくみ プロトタイプを順番に上位に向かって検索 チェーンの終端は Object.prototype 継承関係は差し替えることもできる ただし プロトタイプチェーンはインスタンス生成時に固定 JavaScript は名前空間の機能はない 静的メンバーを定義する要領で名前空間を定義 名前空間をインポートするしくみはない オブジェクト名は 常に完全修飾名で表す必要がある

JavaScript の世界でもテストは必須 JsUnit = メソッドや関数の動作をチェック テストケースに必要なモノ setup teardown メソッド ( 初期化と後始末 ) testxxxxx メソッド ( テストメソッド ) クラスやメソッドの仕様を説明したコメント あらかじめ決められたルールに則ったコメント スタンドアロンタグ インラインタグ ドキュメント生成ツール JsDoc Perl ベースのコマンドラインツール テストスイートでまとめも可 余計なコメントや空白を除去し サイズを小さく Microsoft Ajax Minifier など 難読化ツール ほぼ圧縮と同じ意味 変数名を短いものに 文字列をエンコード処理 ただし 小さなスクリプトではサイズが大きくなることも 読みやすいコードは自分のためでもある コーディング規約 = 読みやすいコードのための指針 安全な コードを記述するためのノウハウでもある

Q&A 掲示板教科書に関する質問はこちらへ http://keijiban.msn.to/top.jsp?id=gr7638