https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Classes
class A {}
console.log(new A());
// A{}
class B{
constructor(){
console.log('constructor');
}
}
console.log(new B());
// constructor
// B{}
class C {
constructor(name, age){
console.log('constructor', name, age);
}
}
console.log(new C('Mark',37));
// constructor Mark 37
// C{}
console.log(new C());
// constructor undefined undefined
// c{}
// 1
class A {
constructor(name,age){
this.name=name;
this.age=age;
}
}
console.log(new A('Mark',37)); // A{name:'Mark', age:37}
// 2
class B {
name;
age;
}
console.log(new B()); // 런타임 오류 주의
// 3
class C {
name='no name';
age=0;
constructor (name, age){
this.name=name;
this.age=age;
}
}
console.log(new C('Mark',37));
// {name:'Mark', age:37}
class A {
hello1(){
console.log('hello1'.this);
}
hello2=()=>{
console.log('hello2'.this);
};
}
new A().hello1(); // hello1 A{hello2: [function: hello2]}
new A().hello2(); // hello2 A{hello2: [function: hello2]}
class B {
name = 'Mark';
hello(){
console.log('hello', this.name);
}
}
new B().hello(); // hello Mark
// 외부에서 값을 바꾸지 않고
// 내부적으로 쓸 경우 _언더바 사용
class A {
_name='no name';
get name(){
return this._name + '@@@';
}
set name(value){
this._name=value + '!!!';
}
}
const a = new A();
console.log(a); // A{ _name: 'no name' }
a.name = 'Mark'; // set 동작
console.log(a); // A{ _name: 'Mark!!!' }
console.log(a.name); // Mark!!!@@@
console.log(a._name); // Mark!!!
class A {
static age = 37;
static hello(){
console.log(A.age);
}
}
console.log(A, A.age); // [function:A] {age:37} 37
A.hello(); // 37
class C {
static name = '이 클래스의 이름은 C가 아니다';
}
console.log(C);
// [Function: 이 클래스의 이름은 C가 아니다]
// { name: '이 클래스의 이름은 C가 아니다' }