オブジェクト | ||||||||||||||||
オブジェクトって何? オブジェクトの基本 ビルドインオブジェクト |
||||||||||||||||
オブジェクトって何? オブジェクトってわかったようでよくわからない人は案外多いのかも? オブジェクトの概念が登場する前では、データとモジュール(関数)がバラバラ に扱われていました。文字列の表示ではchar型の配列とprintf()などを使って いました。データとモジュールをまとめたかたまりがありませんでした。データ だけなら構造体を使ってかたまりを定義できました。C++で構造体で関数がつかる ようにしたクラスの登場です。Visual C++やBorland C++などが有名どころの 統合開発環境でした。しかし、C++は好き勝手にコードを書いていた人にはルールに 縛られるのが嫌なようで開発についていけない人も多かったようです。 社員オブジェクトで考えてみましょう。 社員のデータ(プロパティ)とそのデータを使った処理(メソッド)から成り立ちます。 現在日時から生年月日を計算すれば年齢がわかります。また同様に現在日時から入社年度を 計算すれば勤務年数がわかります。このようにプロパティをメソッドが操作することにより 知りたい情報の取得が可能になります。 何人かの社員がいるのでこのオブジェクトは配列として処理されます。 | ||||||||||||||||
オブジェクトの基本 オブジェクトを生成するにはnew演算子を使います。代わりに{}が使えます。
どちらも{}が出力されています。これはオブジェクトが中身なしの状態です。
データつまりプロパティを作成するには、key:data の形式で定義します。JavaScriptの連想配列と解説している サイトがありますが、本当はオブジェクトなんです。
これでプロパティが定義できました。次は年齢を取得するメソッドを追加します。
年齢を取得するメソッドgetAgeを追加しました。Dataオブジェクトの引き算は
サポートされていないので自力で年齢を計算しています。別に難しい処理ではない
ので説明は割愛します。このようにプロパティとメソッドを定義して自前のオブジェクトを作成する ことができます。 | ||||||||||||||||
ビルドインオブジェクト 変数はオブジェクト 変数 でも紹介したように変数はオブジェクトです。 aの後にドットを打つと、メソッドの候補が表示されます。VS Code のインテリセンスは大変便利です。 このようにあらかじめ用意されているオブジェクトはビルドインオブジェクトです。
| ||||||||||||||||
String 文字を扱うためのオブジェクトです。オブジェクトなので堅苦しく書けば、
a,bは同じように見えますが、型がobjectとstring
の違いがあります。どこが違うのかVS Code でメソッドに
違いがないか調べてみます。aのメソッド。 bのメソッド。 同じです。 var b = "text"; で定義したbは自動的にStringに扱われプロパティや メソッドが使えます。 Stringのメソッド
charAt(n) 文字列のn番目の文字を取得します。
charCodeAt(n) 文字列のn番目の文字コードを取得します。
concat(str) 文字列の最後にstrを連結します。
indexOf(str, start) 文字列にstrが含まれているインデックスを取得します。 var str = "0123456789abcXYZ"; console.log(str.indexOf("abc"));//10 var str1 = "sadaji@sadaji.net"; var find = "daji"; var pos =str1.indexOf(find); console.log(pos);//2 pos += find.length; console.log(pos);//6 pos = str1.indexOf(find, pos); console.log(pos);//9 pos = str1.indexOf(find, pos + find.length); console.log(pos);//-12行目はabcが含まれる位置を取得しています。複数含まれない のならこの書き方でOKです。しかし、複数の含まれ場合3行目は、 開始位置startの指定なしで実行(5行目)。 次に取得した位置(2)に検索文字の長さをstratにして実行(9行目)。 同様に実行すると文字が含まれる位置がないので-1が返ります。 lastIndexOf(str, start) 文字列にstrが含まれているインデックスを最後から取得します。 var str1 = "sadaji@sadaji.net"; var find = "daji"; var pos =str1.lastIndexOf(find); console.log(pos);//9 var pos =str1.lastIndexOf(find, pos-1); console.log(pos);//2 subString(start, end) 文字列に最初のインデックスから最後インデックス前までの文字列を取得します。 var str = "javaスクリプト"; var s = str.substring(2,7); console.log(s);//vaスクリ s = str.substring(7,2); console.log(s);//vaスクリ順番が逆になっても同様に文字列を取得します。 slice(start, end) 文字列に最初のインデックスから最後インデックス前までの文字列を取得します。 var str = "javaスクリプト"; var s = str.slice(2,7); console.log(s);//vaスクリ s = str.slice(7,2); console.log(s);//空順番が逆になると文字列は空になります。substringとは違います。 substr(start, length) 文字列のインデックスから指定された長さの文字列を取得します。 var str = "javaスクリプト"; var s = str.substr(2,6); console.log(s);//vaスクリプ replace(str1, str2) 文字列str1を文字列str2で置き換えます。 var str = "javaスクリプト"; var s = str.replace("java", "python"); console.log(s);//pythonスクリプト |