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 を評価するのはなぜですか?? 私の最初の例は、私にはより自然に思えます...