请不要将我指向JavaScript 中的静态变量
我的问题更具体。我是 JS 的新手(只是读了几本书,看一些截屏视频,并阅读关于 JS 中的 monoins/monads 的博客文章)所以请耐心等待))
为了存储可重用的常量,我编写了这样的代码:
函数 SVGobj(w, h) { this.value = document.createElementNS(SVGobj.svgNS, "svg"); this.value.setAttribute("版本", "1.2"); this.value.setAttribute("宽度", w); this.value.setAttribute("身高", h); } SVG obj.svgNS = "http://www.w3.org/2000/svg"; 函数 SVGCircle(cx, cy, r) { this.value = document.createElementNS(SVGobj.svgNS, "circle"); this.value.setAttribute("cx", cx); this.value.setAttribute("cy", cy); this.value.setAttribute("r", r); }
上面的代码正在工作。SVGCircle重用常量SVGobj.svgNS。
但我不明白SVGobj.svgNS =表达式。根据 JS 规范合法使用 JS 表达式吗?
请注意,此类代码失败:
var SVGobj = {}; SVG obj.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);
为什么?
我可以通过new运算符创建对象,但从“var Cls = {};”开始 表达?
有人建议使用:
函数 SVGobj(w, h) { if (typeof SVGobj.svgNS == 'undefined' ) { SVG obj.svgNS = "http://www.w3.org/2000/svg"; } …… }
为什么每次创建对象时都使用if which 评估?我的第一个例子对我来说似乎更自然......