キャンバスのライブラリ内で使用する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」を使用すると、非常に奇妙に見えます。
そして私は2番目の質問があります:そのすべてのエラーチェックのものは努力する価値がありますか?コードのサイズが2倍になり、読み取りと書き込みが長くなります。また、プロパティはパブリックであるため、nullまたは未定義の値を持つことから完全に保護することはできません。
ご協力いただきありがとうございます :)