자, 그럼 여기서 퀴즈를 내겠다! 점 데이터에 z 좌표를 추가하면 어떻게 될까?
var objectData = [ { x: 10, y: 130, z: 99 }, { x: 100, y: 60, z: 202 }, { x: 190, y: 160, z: 150 }, { x: 280, y: 10, z: 175 } ],
프로그램이 기꺼이 같은 결과를 낼 거로 추측했다면 정답이다. 자바스크립트에서 x, y, z 프로퍼티를 가진 객체는 x, y 프로퍼티만 가진 객체와 다를 바 없다.
생성자 함수로 객체를 만들어도 모양은 딴판이지만, 결과는 같다.
function XYPair(x,y) { this.x = x; this.y = y; } var objectData = [ new XYPair(10, 130), new XYPair(100, 60), new XYPair(190, 160), new XYPair(280, 10) ],
이런 기법을 덕 타이핑(duck typing)이라 한다. “오리처럼 생겨서 오리처럼 걷고 오리처럼 꽥꽥 소리를 낸다면 그건 오리다 ”라는 속담에서 유래됐다. 자바스크립트에서 오리는 여러분의 베프(베스트 프렌드)다. 다음과 같이 써서 판별할 수 있다.
if(something instanceof XYPair)