我对JavaScript很新,当我发现可以用这种语法创建变量时,我正在玩它:
document.foo = 'bar'.
从我所知道的,它的优势在于,当我做类似的事情时:
if (document.foo)
do something;
如果尚未启动变量,则解释器不会抛出异常。
我不知道但想知道的是,创建这样的变量的术语是什么。它只是全局变量,成员变量还是新类型。我也想知道是否有任何理由我不想以这种方式创建变量。
所以任何想要发表大师建议的人都会受到赞赏。
答案 0 :(得分:1)
在Javascript中,有primitive
个值,如数字,字符串和布尔值。 Javascript中的其他所有内容都是object
。
对象可能包含属性,例如my_array.length
,但它们可能包含my_array.pop()
等方法。
在Javascript中,方法和属性可以相当自由地添加,除了少数例外。
现在 - 有擦 -
Javascript环境本身提供了native objects
,例如Object
,Array
,Number
等等。
然后有host objects
由运行Javascript的系统提供。在浏览器中,主机对象包括document
以及一些可能的其他对象。
用host object
搞砸可能会失败 - 所有赌注都会被取消。除了非常标准化和公开的方式之外,将它们弄得一团糟是非常的不良做法。
老实说,只有var
你的变量。如果需要,您可以创建某种options
变量,并在其中添加免费更改属性......如下所示:
var options = {};
options.foobar = true;
if (options.foobar) {
alert("You have chosen a Foobar! Congrats");
}
if (!options.fizzban) {
alert("You have not chosen to play cards with Captain Kirk");
}
答案 1 :(得分:0)
简短回答:该术语是隐含声明。
稍微臃肿的回答:尽管创建变量是完全合法的,但是当应用于面向对象的编程和记录软件的能力时,存在一些缺点。
如果您的对象在运行时具有不同的结构配置,则软件的状态很难预测并且维护代码变得越来越难。
我的建议是:使用某种继承模型或使用javascripts原型体系结构提前声明(并设置明智的默认值!)。这样可以更轻松地记录文档,还可以查看软件用途的心理模型。
JS继承的应用程序的一个很好的介绍可以在john resig这里找到:http://ejohn.org/blog/simple-javascript-inheritance/