JavaScript로 캔버스 용 라이브러리 내부에서 사용할 작은 구조를 만들려고합니다. 다음JavaScript - 유연한 인수
BoundingBox = function(x, y, w, h) {
if('object' === typeof x) {
if(! 'x' in x) throw new Error('Property "x" missing');
if(! 'y' in x) throw new Error('Property "y" missing');
if(! 'w' in x) throw new Error('Property "w" missing');
if(! 'h' in x) throw new Error('Property "h" missing');
this.x = x.x;
this.y = x.y;
this.w = x.w;
this.h = x.h;
} else {
if(null == x) throw new Error('Parameter 1 is missing');
if(null == y) throw new Error('Parameter 2 is missing');
if(null == w) throw new Error('Parameter 3 is missing');
if(null == h) throw new Error('Parameter 4 is missing');
this.x = x;
this.y = y;
this.w = w;
this.h = h;
}
};
과 :
var bb1 = new BoundingBox(0, 0, 200, 100);
var bb2 = new BoundingBox({
x: 0,
y: 0,
w: 200,
h: 100
});
var bb3 = new BoundingBox(bb2);
인가 나는 우리가 컴파일 된 언어처럼 하나 여러 인수가이 구조를 만들 때 전달 된 인수, 또는 특성이 매개 변수에 대응하는 객체를 싶습니다 이것을하는 청결한 방법? 우리가 객체를 사용하는 경우, "x"를 객체로 사용하는 것은 정말로 이상하게 보인다.
그리고 두 번째 질문이 있습니다. 노력을 기울이는 데 오류가 있습니까? 코드의 크기를 두 배로 늘리며 읽기 및 쓰기가 더 길어지고 속성이 공개되어 있으므로 null 또는 정의되지 않은 값을 갖는 것을 완전히 보호하지는 않습니다. 당신의 도움 :) 내가 그 끔찍하지만, 자바 스크립트, 과부하 모든 기능을 사용할 수있는 인수의 VAR을 통해 더 일반적으로 수행됩니다 생각하지 않는다
당신은 간단한'overload' 기능을 만들 수 있습니다
사용법 (: http://jsfiddle.net/m2cRK/1/ 여기 재 할당이 필요하지 않는 기능입니다))', 여기서'types'는 새롭게 선언 된 함수의'typeof' 값의 배열입니다. 그런 다음 과부하 논리와 다른 기능을 분리 할 수 있습니다. – pimvdb
답변 해 주셔서 감사합니다. 나는 당신이 마음에있는 것을 이해하지 못합니다. – Virus721