Help us understand the problem. What is going on with this article?

JavaScriptに再入門しようと思った オブジェクト編

More than 1 year has passed since last update.

目次

基本構文編
オブジェクト編
関数編

オブジェクト

 物の集合という認識は間違えではないが、概念説明において不足している点が多い。
 オブジェクトそのもの自体が一つのモノであり、そのモノに集まる動作や特性の集合体であり、オブジェクトというときはここの要素ではなくオブジェクトそのものが主役になる。

インスタンス化

 配列のようにオブジェクトは参照型であるから、代入をした際に複数の動作でアクセスがあるとデータの競合が発生してしまいます。その際にオブジェクトのデータを保持したまま複製を生成します。

//動的
var 変数名 = new オブジェクト名([引数 [...] ]);
変数名.プロパティ名[= 設定値];
変数名.メソッド名([引数 [...] ]);
//静的
オブジェクト名.プロパティ名[= 設定値];
オブジェクト名.メソッド名([引数 [...] ]);

組み込みオブジェクト

オブジェクト名 提供
Object オブジェクトのひな型機能
Array 配列を操作する手段
Map/WeakMap 連想配列を操作するための手段
Set/WeakSet 一意な集合の管理する手段
String 文字列型を操作するための手段
Number 数値型を操作する手段
Boolean 真偽値を操作するための手段
Function 関数を操作する手段
Symbol シンボル操作する手段
Math 算術演算実行手段
Date 日時操作
RegExp 正規表現
Error/xxxError error情報管理
Proxy オブジェクトの挙動をカスタマイズする手段
Promise 非同期処理の実装手段

これらのオブジェクトはJavaScriptにそのまま組み込まれているものでインスタンス化は意識せずに行われている。

String

var str ='hello';
console.log(str.length);

これはStringオブジェクトのlengthメンバーを利用

分類 メンバー名 概要
検索 indexOf (subStr, [start]) 前方一致検索
lastIndexOf (subStr, [start]) 後方一致検索
startsWith (search, [position]) startが一致するか
endsWith (search, [position]) 末尾が一致
includes(search, [position]) 内容が含まれているか
部分文字列 charAt(num) 文字列抽出(一文字)
slice(start,[end]) 文字列抽出(区間)start > endの場合は空文字を返す また引数が負数の場合は後方から数える
substring(start, [end]) 文字列抽出(区間)start > endの場合は入れ替えを行う また引数が負数の場合は0とする
substr(start, [cnt]) startからcnt文字分抽出
split(str,[limit]) 分割文字strからlimit文の分割を行う
正規表現 match(reg) 正規表現の部分一致
replace(reg, rep) 正規表現で一致した個所を置き換え
search(reg) 正規表現を一致した際の位置
大文字小文字 toLowerCase() 小文字に変換
toUpperCase 大文字に変換
その他 concat(str) 文字列の後方に文字列strを連結
repeat(num) 文字列をnum回だけ繰り返したものを取得
trim() 文字列の前後から空白文字の削除
length 長さ取得

Number

メンバー名 概要
toString(rad) 進数変換
toExponential(dec) 指数形式変換(decは小数点以下の桁数)
toFixed(dec) 四捨五入(decの位になるように)
toPrecision(dec) 指定桁数変換(桁数不足分は0補完)
*isNaN(num) NaNであるか
*isFinite(num) 有限値であるか判定
*isInteger(num) 整数値であるか
*isSafeInteger(num) 安全な整数値であるか
*parseFloat(str) 文字列を小数点に変換
*parseInt(str) 文字列を整数値変換

シンボル

 生成時にユニークな値となり再生成ができない一見変わった性質を持っている。
 シンボルについて別途後でまとめる。

Math

数が多いため今後必要に応じてまとめるが、random(乱数)やsign(正負判定)、またpow(べき乗)、ceil(切り上げ)、floor(切り捨て)、round(四捨五入)が存在する。

array

メンバー名 概要
length 配列数を図る
isArray 配列であるか
toString 配列の内容を" 1,2,3,4,5 "のような形式で返す
indexOf 配列に入っていた場合初めのキーを返す
lastIndexOf indexOfを逆順にしたもの
entries すべてのキー/値を取得
keys すべてのキーを取得
values 値をすべて取得
concat() 配列の連結を返す
join(del) 配列内の要素をdelを挟み連結をする
slice(start,[end]) 要素切り出し
splice(start, cnt, [rep ]) 配列内のstart+1からcnt文の要素をrepで置き換える
from(start[, map [,othis] ]) 配列ライクなオブジェクト、列挙可能なオブジェクトを配列に変換
of 可変長引数を配列に変換
copyWithin(target, start[,end]) start+1からtarget+1までをコピー
fill(val,[start,[end]]) 指定しない場合はすべてを埋め、指定した場合はその範囲をvalで埋める
pop スタックと同じで配列の後ろから吐き出す
push スタックと同じでスタックの後ろに入れる。返り値が次の配列数
shift 先頭を取り出し削除
unshift 先頭に追加
reverse 並びを逆順に
sort 要素の昇順に

コールバック系

メンバー名 概要
forEach 配列内の要素を関数funcで処理
map 配列内の要素を関数ないで加工
every すべての要素が関数のreturnに一致するか
some いずれかの要素が関数のreturn一致するか
filter 条件関数に合致した要素で配列を再生成する
find 関数で初めにtrueになった要素を返す
findIndex 関数で初めにtrueになった要素番号を返す

Map : 連想配列

メンバー名 概要
size 要素数
set(key, val) keyとvalをセットで追加
get(key) 指定したものを取得
has(key) 存在確認
delete(key) 削除
clear すべて削除
keys すべてのkeyを取得
values すべてのvalueを取得
entries すべてのkeyとvalueを取得
foEach(func , [that]) 順繰りに関数で処理
let map = new Map();
map.set('name','Azara');

Set : 重複をしない値の配列

メンバー名 概要
size 要素数
add(val) valを追加
has(key) 存在確認
delete(key) 削除
clear すべて削除
values すべてのvalueを取得
entries すべてのkeyとvalueを取得
foEach(func , [that]) 順繰りに関数で処理

RegExp

正規表現に関してはこちら

オプション 概要
g 文字列全体に対してマッチするか
i 大小文字識別
m 複数行に対応しているか
u Unicode対応
var p = new RegExp('http(s)?://([\\w]+\\.)+(/[\\w-./?%$&=#]*)?', gi)

のような方法で正規表現を代入可能であり、通常の正規表現だいにゅいうも可能である。
- match
正規表現の入った変数で利用可能なメソッドで、比較した文字を引数に入れる。

objectオブジェクト

 objectのオブジェクトは全てのオブジェクトの雛形として共通的な性質や機能を提供するオブジェクト。
詳しくはこちら
詳しく書くのはプロトタイプの時にします。

Globalオブジェクト

今までのオブジェクト異なり、このオブジェクトはグローバル変数やグローバル関数を管理するための便宜的なオブジェクト。
 グローバル変数や関数は他のオブジェクト配下に属さないトップレベルの変数/関数で、自分自身を定義することも可能。
 JavaScriptでいくつかのグローバル変数/関数をデフォルトで提供しています。

変数名; //参照可能
関数名(引数); //使用可能

参考資料

学習に利用している本
改訂新版JavaScript本格入門 ~モダンスタイルによる基礎から現場での応用まで
mozilla

A_zara
プログラミングにあんまり慣れてない系エンジニア学生です。 記事は主に学内の勉強会向けや自分がわからんからまとめたとかがメインです。 放置していたナレッジを放出中
https://westeast1st.github.io/
ipfactory
情報科学専門学校 情報技術サークル「IPFactory」のOrganizationです。それぞれのアウトプット活動を促進するために発足されました。
https://twitter.com/_ipfactory_
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away