プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • JavaScript
  • 【JavaScript】JavaScriptでのオブジェクト指向について
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【JavaScript】JavaScriptでのオブジェクト指向について

04.30

  • miyabisan2
  • コメントを書く

この記事は3分で読めます

JavaScriptも「オブジェクト指向プログラミング言語」の一つです。

ただ、JavaやC++のような本格的なオブジェクト指向を取り入れているのではなく、オブジェクト指向の基本的な機能のみを取り入れています。

基本的な、オブジェクトの種類についてご紹介させていただきます。

オブジェクトの種類

JavaScriptのオブジェクトは大きく、下記の種類に分かれます。

  • 組み込みオブジェクト
  • ブラウザーオブジェクト
  • DOMオブジェクト
  • ユーザー定義のオブジェクト

上記のオブジェクトは、特別な宣言や定義なしに利用することができます。

組み込みオブジェクトの種類

オブジェクト名 説明
Global JavaScriptの基本機能にアクセスするための手段を提供
Object 全てのオブジェクトの雛形
Array 配列を操作するための手段
Date 日付を操作するための手段
String 文字列を操作するための手段
RegExp 正規表現に関わる機能を提供
Number 数値を操作するための手段を提供
Error エラー情報を管理する。
Proxy オブジェクトの挙動をカスタマイズする手段を提供
Promise 非同期処理を実装するための手段を提供

Objectオブジェクトの特徴

全てのオブジェクトの基本オブジェクトです。

組み込みオブジェクトも、ユーザー定義のオブジェクトも、ブラウザーオブジェクトも全て「Objectオブジェクト」が元となっています。

オブジェクトの共通的な性質や機能を提供する。

全てのオブジェクトが「Objectオブジェクト」の機能を使うことができます。

ブラウザーオブジェクトの種類

オブジェクト名 説明
window ブラウザが持っている情報を全て格納しているオブジェクト
document HTMLドキュメント部分
form フォーム部分
image 画像ファイル
button  ボタン
text テキスト部分

メソッド

オブジェクトに対して、操作を行います。

オブジェクト.メソッド(引数);

プロパティ

オブジェクトの属性を示します。

オブジェクト名.プロパティ = 値;

オブジェクトを生成するには?

JavaScript内でObjectを作成したい場合は、下記のような構文を使います。

1
var 変数名 = new オブジェクト名();

この形式で作成したオブジェクトには自由にプロパティを追加していくことが可能です。

なお、newしたタイミングでオブジェクトのメンバの初期化も行われます。これをオブジェクト名と同名のメソッドである「コンストラクタ」と呼びます。

thisキーワード

thisキーワードは、コンストラクターによって生成されるインスタンス(つまり、自分自身のこと)を表します。

オブジェクトのメンバを全て取り出すには?

下記のようなfor文を使うことで、オブジェクト内のメンバを全て取り出すことが可能です。

1
2
3
for(仮の変数 in オブジェクト){
 処理内容
}

オブジェクトのメンバの値にアクセスしたい場合は、「オブジェクト[仮の変数]」という形で出力できます。

JavaScriptは、プロトタイプベースのオブジェクト指向言語

ここまで、JavaScriptでのオブジェクト指向の基本について展開してきましたが、もう一つ重要な概念があり、JavaScriptは、Java等の言語のように「クラスベース」ではなく、「プロトタイプベースのオブジェクト指向言語」になります。

newを使ったインスタンス化という概念はありますが、「クラス」という概念はなくあくまで「プロトタイプ(雛形)」という概念のみが存在します。

「プロトタイプ」とは?

「あるオブジェクトの元となるオブジェクト」のこと、JavaScriptでは「プロトタイプ」を利用してオブジェクトを作成していくことになります。

よって、JavaScriptは、よく「プロトタイプベースのオブジェクト指向言語」と呼ばれます。

「クラスベースのオブジェクト指向言語」との違い

端的に言えば、クラスと言う抽象的な設計図を使ってインスタンスを生成するのではなく、あくまでプロトタイプ(雛形)という具体化されたオブジェクトを元に新しいインスタンスを作成するのです。

また、実務的な特徴としては、「より縛りが弱いクラス」で、具体的に言えば、「関数(Functionオブジェクト)」に対してクラスの役割を与えている言語と言えます。(JavaScriptの関数は非常に緩いですからね。)

具体例

下記のように、変数の中に関数リテラルを代入していますが、これが最もシンプルなJavaScriptのプロトタイプになります。

1
var Prot = function(){};

上記のように、宣言したプロトタイプは下記のようにnewしてインスタンス化することができます。

1
var pro = new Prot();

スポンサーリンク
  • 2018 04.30
  • miyabisan2
  • コメントを書く
  • JavaScript
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2018 07.07

    【JavaScript】「Web Storage(ストレージ)」、ローカルストレージの実装など

  2. 2020 02.29

    【webpack】設定の基本や「loader(ローダー)」について

  3. 2018 06.17

    【JavaScript】「関数」の特徴(「高階関数」も含めて)

  4. 2021 10.10

    【JavaScript】時間操作ライブラリ比較(Dateオブジェクト、Moment、Luxon、js-Joda、day.js、date-fns、Temporal)

  5. 2020 04.26

    【JavaScript】「配列」、「lodash」の活用

  6. 2020 05.02

    【JavaScript】文字列クラス(String)、数値関連クラス(「Math」、「Number」)、コレクションクラス(Map、Set)

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【JavaScript】DOMの基礎、HTMLを操作す…

【Java】オブジェクト指向:継承の考え方や注意点

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー