JavaScriptオブジェクトのプロパティ取得方法(.と[]の違い)

JavaScriptではオブジェクトのプロパティにアクセスする方法が2つあります:1. ドット記法(.)2. ブラケット記法([])

// ドット記法でプロパティ値を取得する(キーは静的)
const userData = {userName: "田中", userAge: 25};
console.log(userData.userName);

// ブラケット記法でプロパティ値を取得する(キーは動的、文字列や数値形式が可能)
const fruitStock = {"リンゴ": 5, "バナナ": 3};
const numberData = {1: "first", 2: "second"};
console.log(fruitStock["リンゴ"]);
console.log(numberData[1]);  // 配列と混同しやすい注意点、numberDataは依然としてオブジェクトです

// オブジェクトの全キーを取得する方法
console.log(Object.keys(fruitStock));  // 出力: [ 'リンゴ', 'バナナ' ]

静的と動的の違いとは?

序文:

今日、関数をカプセル化する際に、[]記法では動作するのに.記法では動作しないという現象に遭遇しました。非常に不思議に思ったので、技術ブログをいくつか調べてみたところ、ようやくこの問題の解決策がわかりました。以下にその内容を共有します。

コード:任意の要素の任意のスタイル属性を取得する

<style>
    *{
        margin: 0;
        padding: 0;
    }
    #container{
        width: 150px;
        height: 150px;
        background: lightblue;
        left: 150px;
        top:75px;
    }
</style>
    
<body>
    <input type="button" value="スタイル表示" id="showBtn">
    <div id="container"></div> 
    <script>
        const element = document.getElementById('container'); 
        function getStyleValue(targetElement,styleProperty){
            if(window.getComputedStyle){
                return window.getComputedStyle(targetElement,null)[styleProperty];
            }else{
                return targetElement.currentStyle[styleProperty];
            }
        }
        document.getElementById('showBtn').onclick=function(){
            console.log(getStyleValue(element,'top'));   //75px、文字列型
        }
    </script>
</body>

注意: 上記のコードで[styleProperty]を.stylePropertyに変更すると値を取得できなくなります。その理由は ドット記法ではプロパティ値を取得する際、キーは静的である必要がある からです。ブラケット記法ではプロパティ値を取得する際、キーは動的で文字列や数値形式が可能 なのです。ここでstylePropertyは渡されたパラメータであり、値は可変ですから、.記法でプロパティ値を取得することはできないのです。皆さんもこの落とし穴には気をつけてください!

タグ: javascript オブジェクト プロパティアクセス ドット記法 ブラケット記法

8月2日 08:37 投稿