[JavaScript/Base]オブジェクト属性アクセス者オブジェクト属性アクセス

3468 ワード

属性アクセス者は、JavaScriptで最も基本的なオブジェクト属性(property)へのアクセス方法です.
今日は、JavaScriptでサポートされているプロパティメソッドと、どのような場合に使用するかについて説明します.

1.ドット記号Dot Notation


JavaScriptでは、基本的なPropertyアクセス方法を以下に示します.
obj = {
   prop1: 'a',
   prop2: 'b'
}

console.log(obj.prop1); // 'a'
console.log(obj[prop2]); // 'b'
最初のprop 1は点マーキング法であり、第2の方式は括弧マーキング法である.どちらの方法も同じ機能を示しているが,用途が異なり,通常点マーキング法を用いる方法が最も多い.

ポイントマーク法は他の言語でも使われており、方法は大衆化されている.Javaの場合、作成者によってプロパティが初期化されたり、作成されたインスタンスからアクセスされたりするときに同じ方法が使用されます.javascriptはクラスのインスタンスではなく、オブジェクトのプロトタイプに基づいているため、定義が異なるだけで、概念自体が似ています.これは、オブジェクト内で定義された関数(メソッド)または変数を呼び出す非常に自然な方法にすぎません.このメソッドを使用してアクセスする場合は、同じ意味を使用し、転送、バインド、またはすべて同じ意味を使用します.最も基本的な文法です.



2.かっこタグ

console.log(obj[prop2]); // 'b'
2つ目の方法は括弧表記法で、こいつはとても役に立つ.オブジェクトにpropertyの名前を入力します.初めてjavascriptを使う人は「なぜこれを使うのか」と感じるかもしれません.では、JavaScriptの原型を知る必要があります.
まず形態的に見ると、配列の仕方と同じです.通常、配列内の要素を呼び出そうとすると、以下のように使用されます.
const array = [1,2,3,4,5]
console.log("index: 0, value:", array[0]); //index: 0, value: 1
馴染みのある文法.配列は常にインデックスでアクセスできるからです.ただし、JavaScriptの配列もオブジェクトです.どういう意味ですか.実際、JavaScriptのすべてのコンテンツはオブジェクトです.プロトタイプベースの言語としては,元の資料型のほか,参照資料型のクラス,関数,配列などが対象である.JavaScript内のすべてのオブジェクトにはプロトコルタイプがあり、valueOf()からプロパティを知ることができます.対象の詳細は次の記事に記録します.ここで理解する部分は、配列、オブジェクト、または事実上のオブジェクトプロトタイプです.
const object = {
    "1": 1,
    "2": 2,
    "3": 3
}
const array = [1,2,3]

console.log(typeof object); // Object
console.log(typeof array ); // Object
特定の配列をプリントアウトすると、その意味がわかるかもしれません.出力配列の場合、配列にもpropertyがあり、そのキーワードであるproperty名はデジタルインデックスです.だからこそ、配列のインデックス(0から)で要素を1つずつ呼び出します.

では、オブジェクト、配列、またはカッコ記号を使用してプロパティを呼び出すことができることを示します.これは2つの配列と1つのオブジェクトと言えるが,実際には2つともオブジェクトであるが,プロシージャを呼び出す方法は同じである.
array[0]
object[property_name]
何か特別なところがあるとすれば、上のようにしたとき、その中の2つが間違いを犯しているということです.これは、JavaScriptのオブジェクト属性が数値の先頭でポイント記号を使用できないことを意味します.
const array = [1,2,3];
array[0] // 1
array.0 // error

const array = {
   "1": 1,
   "2": 2,
   "3": 3
}
array["1"] // 1
array.1 // error
この方法にはいくつかの利点がある.まだ宣言されていないPropertyにアクセスすると、ポイント式を使用するとアクセスできないエラーが発生しますが、カッコ式は可能です.また、特定の機能を実現したい場合は、forループの代わりに効率的に使用できます.
次は私が経験した方法です.

const users = [
    {
        id: '1',
        name: 'park',
    },
    {
        id: '2',
        name: 'kim',
    },
    {
        id: '3',
        name: 'lee',
    }
]
idは知っていますが、3番のユーザーにアクセスするには、重複文を使用してidが3のオブジェクトを検索する必要があります.この場合、O(n)の時間的複雑度が発生するが、予めユーザを抽出して複数のオブジェクトにユーザをマッピングすると、O(n^2)の時間的複雑度が発生する.耕牛に役立つのは括弧マーキング法で、配列ではなくユーザーをオブジェクトとします.
const users = {
    1: {
        id: 1,
        name: 'park'
    },
    2: {
        id: 2,
        name: 'kim'
    },
    3: {
        id: 3,
        name: 'lee'
    }
}
これにより、カッコタグ法を使用してオブジェクトのプロパティに直接アクセスできます.時間複雑度O(1)は時間複雑度を困難にすることを避けることができる.
計算性能が良好であれば、データ処理速度は影響を受けない可能性がありますが、これらの負荷が次々と増加すると、サーバは最終的にメモリ不足でクラッシュし、CPUが急増する可能性があります.基本コードから安定した開発を進めていけば、後でもっと便利になるので、これはよくお勧めの方法です.