[Javascript]オブジェクトテキスト


第10章対象転
ソースモダンJavaScript Deep Dive.
JavaScriptのオブジェクト
JavaScriptは、プロトコル・タイプに基づくオブジェクト向けプログラミング言語です.元の値を除いて、ほとんどの内容はオブジェクトに分類され、元の値とは異なり、オブジェクトは変更可能な値です.オブジェクトは0つ以上のプロパティの集合です.プログラムはkeyとvalueで構成されています.
var obj = {
	name: 'JK Cho',	//프로퍼티
	location: 'Korea', //location은 key, Korea는 value
};
オブジェクトの作成
JavaScriptは、他のオブジェクト向け言語とは異なり、プロトコルベースのオブジェクト向け言語であり、複数のオブジェクト作成方法をサポートしています.
  • オブジェクト文字
  • オブジェクトジェネレータ関数
  • ジェネレータ関数
  • Object.create
  • Class
  • オブジェクト文字を使用して生成されたオブジェクトコードの場合、カッコはコードブロックではなく値として評価されます.したがって、セミコロンを使用する必要があります.
    オブジェクトインスタンスは、クラスによって生成され、メモリに格納されるエンティティです.オブジェクト向けプログラミングでは、オブジェクトはクラスとインスタンスを含む概念です.
    保証する
    keyは文字列または数値で指定でき、識別子作成規則に従わない.また,シンボルタイプの変数も代入できる.valueは、JavaScriptで使用可能なすべての値を代入できます.ただし、識別子作成規則に従わないキー値は、「」または「」を使用してカプセル化する必要があります.Propertyの値にアクセスすると、識別子作成規則に従って作成されたキー値のPropertyは「」オブジェクトです.「key」という形で使用できます.ただし、識別子作成規則に従わない場合は、[オブジェクト](Object)[キー](Key)の形式で使用する必要があります.
    var obj = {
      firstName: 'JK'
    	'last-name': 'Cho',
    }
    
    console.log(obj.firstName)
    console.log(obj['last-name']);
    オブジェクトの定義と使用中に、次のような特殊な特徴があります.

  • property keyは空の文字列として使用できます.
    var obj = {
    	'' : ''
    };
    
    console.log(obj['']) //''

  • propertyのkeyを文字列または記号以外の値として指定した場合、デフォルトでは文字列に変換されます.
    var obj = {
    	0: 'a',
    	1: 'b',
    	2: 'c'
    };
    
    console.log(obj['1']) //'a'

  • 同じpropertyキーを使用すると、宣言されたpropertyは既存のpropertyを上書きします.
    var obj = {
    	name: 'JK Choo',
    	name: 'JK Cho'
    };
    
    console.log(obj.name) //JK Cho

  • 予約語をpropertyキーとして使用できます.
    var obj = {
    	var: 'var',
    	function: 'function'
    };
    
    console.log(obj.var); //'var'
  • 方法
    JavaScriptオブジェクトでProperty値として使用される関数は、メソッドの名前を使用して一般的な関数を区別します.メソッドは、メソッドを作成するオブジェクト内で他のプロパティを使用できます.
    var rect = {
    	width: 4,
    	height: 5,
    	getSize: function() {
    		return this.width * this.height;
    	}
    };
    
    console.log(rect.getSize()); //20
    特許アクセス
    オブジェクトに存在しないPropertyキーを使用してアクセスすると、次の結果が表示されます.
    var obj = {
    	name: 'JK Cho',
    }
    
    console.log(obj.age) //undefined
    次に、オブジェクトのpropertyにアクセスする方法を示します.
    var obj = {	firstName: 'JK',	'last-name': 'Cho',	3: 4}obj.firstName; //'JK',obj['firstName']; //'JK'obj.last-name; //NaNobj.'last-name'; //SyntaxErrorobj[last-name]; //ReferenceErrorobj['last-name']; //Choobj.3; //SyntaxErrorobj.'3'; //SyntaxErrorobj[3]; //4obj['3'] //4
    ダイナミックプロファイルの作成と削除
    オブジェクトを作成すると、次のようにオブジェクトのプロパティを動的に作成できます.deleteキーワードを使用してpropertyを削除することもできます.
    var obj = {	name: 'marine',  speed: 3,  range: 5};obj.cost = 50;obj[damage] = 5;delete obj.speed;delete obj['range'];console.log(obj); //{name: 'marine', cost: 50, damage: 5}
    オブジェクトテキスト拡張
    ES 6の後にオブジェクト文字の拡張が提供される.

  • Propertyサムネイル表示
    var x = 1;var obj = {	x,	y = 2;};console.log(obj); //{x: 1, y: 2}

  • 計算された構成名
    var unitName= 'marine';var num = 0;var obj = {	[`${unitName}_${++num}`]: num,	[`${unitName}_${++num}`]: num}console.log(obj); //{marine_1: 1, margin_2: 2}

  • メソッド簡略表示
    var obj = {	life: 5;	getAttacked() {		--this.life;		console.log(`life is ${this.life}`);	}};