JSオブジェクト


注意:Javascript入門-コード4級入門コース1

サンプルとして表示されるオブジェクト

var p1={};
console.log(typeof p1);//Object
p1.name="Jenny";
console.log(p1); //{name:"Jenny"}
p1.name="Jungwon"; //이러면 과연 바뀔까?
console.log(p1);//{name:"Jungwon"} 바뀐다

オブジェクトの作成

var p2={};
p2.name="Jenny";
p2.weight="100";
p2.eat=function(food){
	console.log(this.name + "이" + food + "를 먹었습니다.");
    this.weight+=1;//this.name, this.weight 객체 자신의 name, weight를 의미
}

JSONシンボルを使用したオブジェクトの作成

var m1={"name":"Jenny",
	"hp":100,
        "power":50,
        "attack": function(target){
        	target.hp-=this.power;
        	}
        };
m1.attack(m1); //hp:50

作成者を使用したオブジェクトの作成


-通常、似たようなオブジェクトを複数作成する場合は、ジェネレータを使用して作成できます.
example)
let Human = function (name, hp, power) {
	this.name=name;
    	this.hp=hp;
    	this.power=power;
    	this.attack=function(target){
    		target.hp-=this.power;
    }
}
このようにジェネレータを作成し、ジェネレータを使用してオブジェクトを作成するときにnewキーを使用します.
let m1=new Human("Jenny", 100, 10);
let m2=new Human("Jungwon", 999, 1);
m1.attack(m2);
console.log(m2); // ["Jungwon", 989, 1]
このときm 1は参照変数~

参照変数と一般変数


オブジェクトが変数に割り当てられている場合は、変数が参照されます.デフォルトのタイプが変数に割り当てられている場合は、通常の変数です.
  • 通常変数は、値をコピーおよび置換できます.
  • の値のみが格納、他の変数は常に独立して
  • 存在する.
    let a = 5;
    let b = a;
    b = 10;
  • 参照変数の動作を理解する
  • let arr1=[0, 1, 2, 3, 4];  //배열객체를 arr1 참조변수가 참조.
    let arr2=arr1; //참조변수가 참조변수를 참조하고있다.
    arr1.push(5);
    console.log(arr1); //[0, 1, 2, 3, 4, 5]
    console.log(arr2); //[0, 1, 2, 3, 4, 5]
    console.log(arr1===arr2); //true
    TIP)参照変数をオブジェクトの別名として扱う.例えばJenny鄭源鄭順は私ですが、私が太ったらあの3人も太ります.私だから.

    参照変数とcall by reference

    두 코드의 차이를 보자
  • 転送値
  • let foo=function(v){
    	v=v*2;
        	console.log(v);
    	};
    let a = 10;
    foo(a); //20
    console.log(a);//10 a는 여전히 10
  • 参照転送
  • let foo=function(ref){
    	ref.v=ref.v*2;
    	console.log(ref);
    }
    let p = {name: "Jenny", v: 90};
    foo(p);// {name:"Jenny", v:180}
    console.log(p); // {name: "Jenny", v: 180}
    値伝達変数は、関数の内部で値を変更しますが、外部では変更されません.
    内部で値を変更すると、リファレンス伝達変数は外部オブジェクトの値を変更します.