[Javascript][week 3]オブジェクトを定義し、オブジェクトを作成します.


オブジェクト

  • オブジェクトはJavaScriptデータ型の1つです.
  • オブジェクトには、機能と属性があります.
  • オブジェクトはkey:value形式で構成された変数であり、配列とは異なり、順序は重要ではありません.
  • 
      let Object={
        
        key1 : value,
        key2 : value,
        ...
      }
    オブジェクトが持つ値をproperty、オブジェクトが持つ関数をメソッドと呼びます.(2人ともプロと呼ばれています)
    オブジェクトのプロシージャとメソッドはキー値で区切られます.
    オブジェクトの作成方法は3つあります.
  • オブジェクト文字
  • ジェネレータ関数
  • Object.create()
  • 1.対象文字方式


    var obj = {key:value, ...} : 変数を作成するように、カッコ内でカンマ(,)でキーを区切る:valueを使用してオブジェクトを作成します.
    let myself={
        name : 'Code Kim',
        age : 30,
        location : {
          
          country : 'South Korea',
          city : 'Seoul' 
        },
       
      hello : function(){
        return '이름은 ${this.name}이고, 나이는 ${this.age}입니다.';
      }
    }
    
    console.log(myself)
    ここでname,age,locationはproperty,helloはメソッドである.
    キー値は文字列(string)で記入する必要があります.
    原則として引用符で囲みますが、識別子命名規則を守れば省略できます.
    *識別子命名規則:文字/数字/アンダーコード()/ドル記号($)で構成され、数字の先頭にはなりません.(保留語は含まれません)

    2.コンストラクション関数(Constructor)


    new Constructor()でオブジェクトを作成する方法.
    1)new Object():new演算子でオブジェクトのコンストラクション関数を呼び出します.
    var mySelf=new Object();
    
    mySelf.name='김주현';
    mySelf['age']=28;
    
    mySelf.hello = function(){
      return '이름은 ${this.name}이고, 나이는 ${this.age}입니다.';
    }
    
    console.log(mySelf);
    //[object Object] {
    //  age: 28,
    //  hello: function(){
    //  return '이름은 ${this.name}이고, 나이는 ${this.age}입니다.';
    //},
    //  name: "김주현"
    //}
    2)Number、String、Arrayなどの組み込みオブジェクトを作成することもできます.
    //String객체 생성하기
    var strObj = new String('hello world');
    console.log(strObj)
    //Array객체 생성하기
    var arrObj = new Array([1,2,3]);
    console.log(arrObj)
    3)newカスタムジェネレータ():直接ジェネレータ関数を作成してオブジェクトを作成できます.
    //생성자 함수 만들기
    var mySelf = function(name, age){
      this.name = name; 
      this.age = age;
      this.hello = function() {
        return '이름은 ${this.name}이고, 나이는 ${this.age}입니다.';
      }
    }
    
    //객체 생성하기
    var myObj = new mySelf('김주현', 28);
    console.log(myObj);
    //[object Object] {
    //  age: 28,
    //  hello: function() { ...  },
    //  name: "김주현"
    //}

    3. Object.create()メソッド


    Object.create(プロトタイプ):プロトタイプ継承によってオブジェクトを作成する方法.
    const calculate1= {
      a: 2,
      square : function(b){
        return this.a * 2;
        //this는 calculate1을 가리킴
      }
    };
    
    console.log(calculate1.square());
    
    
    const calcualte2 = Object.create(calculate1);
    //calculate2는 프로토타입을 calculate1으로 가지는 객체이다
    
    calculate2.a=4; 
    //calculate2에 'a'라는 새로운 속성을 만듬 (method overriding)
    console.log(calculate2.square()); //16
    //calculate1의 함수 square를 상속받으며, this.a는 
    //calculate2.a를 나타내고 이는 calculate2의 개인속성 'a'가 된다.

    点記号とかっこ記号


    1. Dot notation


    ピリオド(.)ロビーに近づく.
  • property識別子には、アルファベット(,$)
  • しか含まれません.
  • の数字で始めることはできません.
  • 変数を含めることはできません.
  • let myself={
        name : 'Code Kim',
        age : 30,
        location : {
          
          country : 'South Korea',
          city : 'Seoul' 
        }
    
    }
    
    console.log(myself.name);
    console.log(myself.age);
    console.log(myself.location);
    keyは、オブジェクトのpropertyのみを許可するため、key値を他の変数で参照できません.
    let myself={
        name : 'Code Kim',
        age : 30,
        location : {
          
          country : 'South Korea',
          city : 'Seoul' 
        }
    
    };
    
    let myName='juhyun';
    
    console.log(myself.myName);   //undefined
    // myName은 myself에 정의된 프로퍼티가 아님
    // myname.name으로만 접근 가능
    

    2. Bracket Notation


    カッコ([])の間にキー値を挿入して文字列としてアクセスします.
  • Property識別子は、文字列または文字列を参照する変数
  • である.
  • の数字から始めることができます.
  • 変数で、空白で使用できます.
  • let myself={
        name : 'Code Kim',
        age : 30,
        location : {
          
          country : 'South Korea',
          city : 'Seoul' 
        }
    
    }
    
    console.log(myself['name']);
    console.log(myself['age']);
    console.log(myself['location']);
    
    変数が文字列として解釈される場合、ブラウザは変数を書き込むこともできます.
    let obj = {
    	cat: 'meow',
    	dog: 'woof',
    };
    
    let dog = 'cat';	
    
    //bracket notation은 obj안에 dog프로퍼티를 찾지 않고,
    //변수dog에 cat을 대입하여 문자열값이 패스되고 cat프로퍼티를 찾는다
    let sound1 = obj[dog];			
    console.log(sound1);   // meow
    
    //dot notation은 변수에 접근할 수 없어 dog변수의 값 대신 dog문자열의 값을 찾는다
    let sound2 = obj.dog;
    console.log(sound2);   // woof
    コメントサイト:
    https://codeburst.io/javascript-quickie-dot-notation-vs-bracket-notation-333641c0f781
    https://curryyou.tistory.com/189