ES5 방식의 인스턴스는 name 프로퍼티를 찾지 못한다
예제
function G () {}
G.method1 = function (){}
G.prototype.method2 = function (){}
const g = new G()
console.log(G.method1.name, g.method2.name)
코드 해석 :
-> G.method1 = function (){}
G 를 생성자 함수로 사용했고 함수는 일급 객체이기 때문에 프로퍼티를 할당할 수 있다.
-> G.prototype.method2 = function (){}
G 의 프로토타입이 할당할 메서드들은 인스턴스(g)에 상속이 된다. 그렇기 때문에
-> g.method2
인스턴스 입장에서 자신의 것처럼 호출할 수 있다.
G의 메서드 이름과 G의 인스턴스인 g의 메서드 이름을 콘솔로 찍으면 둘 다 undefined 가 출력된다.
ES6 클래스 방식의 인스턴스는 name 프로퍼티를 찾는다
예제
class F {
static method1(){}
method2(){}
}
const f = new F()
console.log(F.method1.name, f.method2.name)
콘솔 결과
method1, method2 가 출력된다.
'배운 것 > js' 카테고리의 다른 글
[js] Destructuring assignment (해체할당) (0) | 2020.01.19 |
---|---|
[js] arrow function 의 this (0) | 2019.12.09 |
[js] Ajax란 (0) | 2019.12.02 |
[js] 프로토타입 상속이 어떻게 작동하는가 (0) | 2019.12.02 |
[js] arrow function 규칙 (0) | 2019.11.09 |