JavaScript の静的変数を教えないでください
私の質問はより具体的です。私はJSの初心者です(数冊の本を読んだり、スクリーンキャストを見たり、JSのモノイン/モナドに関するブログ記事を読んだりするだけです)ので、しばらくお待ちください))
再利用可能な定数を格納するには、次のようなコードを記述します。
関数 SVGobj(w, h) {
this.value = document.createElementNS(SVGobj.svgNS, "svg");
this.value.setAttribute("バージョン", "1.2");
this.value.setAttribute("幅", w);
this.value.setAttribute("高さ", h);
}
SVGobj.svgNS = "http://www.w3.org/2000/svg";
関数 SVGCircle(cx, cy, r) {
this.value = document.createElementNS(SVGobj.svgNS, "円");
this.value.setAttribute("cx", cx);
this.value.setAttribute("cy", cy);
this.value.setAttribute("r", r);
}
上記のコードは機能しています。SVGCircle は定数 SVGobj.svgNS を再利用します。
しかし、 SVGobj.svgNS =式がわかりません。JS仕様に従ったJS式の合法的な使用はありますか?
そのようなコードは失敗することに注意してください。
var SVGobj = {};
SVGobj.svgNS = "http://www.w3.org/2000/svg";
関数 SVGobj(w, h) {
this.value = document.createElementNS(SVGobj.svgNS, "svg");
this.value.setAttribute("バージョン", "1.2");
...
}
....
エラーあり:
TypeError: SVGobj.prototype が定義されていません
新しい SVGobj(320, 240);をインスタンス化しようとすると
なんで?
「var Cls = {};」から始まる新しい演算子でオブジェクトを作成できますか? 表現?
誰かが使用することを提案します:
関数 SVGobj(w, h) {
if (typeof SVGobj.svgNS == '未定義' ) {
SVGobj.svgNS = "http://www.w3.org/2000/svg";
}
....
}
オブジェクトを作成するたびにif which を評価するのはなぜですか?? 私の最初の例は、私にはより自然に思えます...