職案人

求職・歴史・仏教などについて掲載するつもりだが、自分の思いつきが多いブログだよ。適当に付き合って下さい。

JS--オブジェクト指向のclassを理解する

2024年08月09日 | JavaScript

オブジェクト指向のclassを理解する

【開発環境】
OS:Win11(64ビット)
VSCode1.72.2、
クロム

【classとは】
JavaScriptのclassは、オブジェクト指向プログラミング(OOP)の概念を実現するための構文です。クラスは、同じプロパティやメソッドを持つオブジェクトの設計図となるものです。

classキーワードを使用してクラスを宣言し、そのクラス内でプロパティやメソッドを定義します。クラス内で定義されたメソッドは、そのクラスから作成されたオブジェクト(インスタンス)で使用することができます。

基本構造
class MyClass {
 constructor() {
 // コンストラクタ: インスタンスを作成する際に実行されるメソッド
 // インスタンス固有の初期化処理を行う
}
method1() {
// メソッド1の定義
}
method2() {
// メソッド2の定義
}
}
以上がMyClassというクラスを定義した。

【クラスを使う場面】
例えば、商品情報を持った複数のオブジェクトを作りたいとします。
クラスを使わずに、オブジェクトを用意するとした場合に用いられる。

サンプル
const product1 = {
  name: '商品A',
  price: 300,

display(){
  console.log(`商品名:${this.name} 値段:${this.price}円`);
 }
}
const product2 = {
 name: '商品B',
 price: 400,

 display(){
 console.log(`商品名:${this.name} 値段:${this.price}円`);
 }
}
const product3 = {
 name: '商品C',
 price: 1000,

display(){
console.log(`商品名:${this.name} 値段:${this.price}円`);
 }
}
この商品の例をクラスを使って実装すると、以下のようになります。
class Product{
    constructor(name,price){
        //thisの設定、プロパティの初期化
        this.name = name;
        this.price = price;
    }

    //各インスタンスが参照するメソッドを定義
    display(){
        console.log(`商品名:${this.name} 値段:${this.price}円`);
    }
}

【new演算子】
クラスは関数ですが、一般的な関数とは異なり実行する際は、クラス名の前に「new」をつけます。

const product1 = new Product("商品A",300);

【クラスを使ったhtmlのサンプル】

「class.html」ファイルのコード

「script.js」

ブラウザを立ち上げる

値を入れてクリックする

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

JS--ドキュメントに文字を書く

2024年08月07日 | JavaScript

ドキュメントに文字を書く

【開発環境】
OS:Win11(64ビット)
VSCode1.72.2、
クロム

【ドキュメントに文字列を書き込む】
Document オブジェクトの write メソッドは、ドキュメントに対して文字列を書き込みます。

書式:document.write(string)

引数に指定した文字列をドキュメントに対して書き込みます。書き込まれた文字列は HTML コードとして扱われます。

サンプル

ブラウザを立ち上げる


<script> 要素の下に

Hello

が書き込まれていることが確認できます。

このように簡単にドキュメントに対して文字列の形式で HTML コードを書き込むことができますが、現在 HTML に関する仕様を定めている HTML Living standard ではこのメソッドの使用について推奨はしていません。

Document.write メソッドの代わりにドキュメントに対してテキストを書き込むための方法のひとつとして Document.currentScript プロパティと insertAdjacentHTML メソッドを組み合わせて代替することができます

 
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

JS--複数のノードをまとめて追加

2024年08月06日 | JavaScript
複数のノードをまとめて追加

【開発環境】
OS:Win11(64ビット)
VSCode1.72.2、
クロム

DocumentFragment オブジェクトとは】
DocumentFragment オブジェクトは、JavaScriptで使われる特別なオブジェクトで、親ノードを持たない軽量なドキュメントの一部を表します。これを使うと、複数のノードを一時的にまとめて操作し、最終的に一度にDOMツリーに追加することができます。

【DocumentFragmentオブジェクトを作成する】
最初に空の DocumentFragment オブジェクトを作成します。 Document オブジェクトの createDocumentFragment メソッドを使います。

書式:document.createDocumentFragment()

実際に作成する
let fragment = document.createDocumentFragment();
または、
let fragment = new DocumentFragment();

例えば
DocumentFragment オブジェクトを作成したあとで div タグの要素ノードと p タグの要素ノードを作成しそれぞれの要素ノードを DocumentFragment オブジェクトに追加するには次のように行います。

【他のノードにDocumentFragmentオブジェクトを追加する】
DocumentFragment オブジェクトもノードのひとつですので、既にドキュメントに追加されているノードの子ノードや同じ階層のノードとして追加することができます。

例えば
id 属性の値が xxx のノードの子ノードとして DocumentFragment オブジェクトを追加するには次のように記述します。

let fragment = document.createDocumentFragment();

let child1 = document.createElement('div');
let child2 = document.createElement('p');
child2.append(document.createTextNode('Hello'));

fragment.append(child1);
fragment.append(child2);

let parentnode = document.getElementById('xxx');
parentnode.append(fragment);

ただ他のノードと違い、
DocumentFragment オブジェクトそのものが追加されるわけではなく DocumentFragment オブジェクトに追加されているノードだけが追加される点に注意してください。

例えば
li タグの要素ノードを 2 つ追加した DocumentFragment オブジェクトを、 ul タグの要素ノードの子ノードとして追加する場合で考えてみます。

この時、 DocumentFragment オブジェクトそのものが子ノードとして追加されるのではなく、 DocumentFragment オブジェクトに追加されていたノードだけが子ノードとして追加されます。

このように DocumentFragment オブジェクトを利用することで、一時的な DOM ツリーを作成し必要なノードを追加したあとで、一時的な DOM ツリーに追加されていたノードだけをまとめて別のノードの子ノードなどに追加することができます。

サンプル

ブラウザを立ち上げる

表示されたボタンをクリックすると、 DocumentFragment オブジェクトを作成したあと li タグの要素を 2 つ作成し DocumentFragment オブジェクトに追加します。そのあとで追加先ノードとして id 属性が shopinfo の要素ノードを取得し、先に作成した DocumentFragment オブジェクトを追加先ノードの子ノードの最後に追加しています


コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

JS--現在処理を実行しているscript要素を取得

2024年08月04日 | JavaScript

現在処理を実行しているscript要素を取得

【開発環境】
OS:Win11(64ビット)
VSCode1.72.2、
クロム

【currentScriptプロパティの使い方】
Document オブジェクトの currentScript プロパティを参照すると現在実行している <script> 要素を取得します。

書式;document.currentScript

サンプル

この HTML ページをブラウザで表示するとコンソールには次のように出力されます

<script>
let element = document.currentScript;
console.log(element);
</script>

ブラウザを立ち上げる

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

HTMLを表す文字列からノードを作成し指定の位置に追加

2024年08月03日 | JavaScript
HTMLを表す文字列からノードを作成し指定の位置に追加

【開発環境】
OS:Win11(64ビット)
VSCode1.72.2、
クロム

【ノードを指定の位置に追加する】
Element オブジェクトの insertAdjacentHTML メソッドを使うと指定した文字列からノードを作成し追加することができます。

書式:element.insertAdjacentHTML(position, text)

2 番目の引数に指定した文字列を HTML 文として解析し、 HTML 文からノードを作成します。作成したノードを 1 番目の引数で指定した位置に追加します。

1番目の引数で指定する位置

2 番目の引数には HTML として解析可能な文字列を指定
例文:'<p class="msg">Hello</p>'

サンプル

・ブラウザを立ち上げる

「前のノードを追加」ボタンをクリックすると、 id 属性が shopinfo の要素ノードの前にノードを追加します

「子ノードの先頭にノードを追加」ボタンをクリックすると 、id 属性が shopinfo の要素ノードの子ノードの先頭にノードを追加します。


以上

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする